fc

比较两个文件或文件集并显示它们之间的差异。

Syntax

fc /a [/c] [/l] [/lb<n>] [/n] [/off[line]] [/t] [/u] [/w] [/<nnnn>] [<drive1>:][<path1>]<filename1> [<drive2>:][<path2>]<filename2>
fc /b [<drive1:>][<path1>]<filename1> [<drive2:>][<path2>]<filename2>

Parameters

Parameter Description
/a 缩短 ASCII 比较输出。 fc 不会显示所有不同的行,而是仅显示每组差异的第一行和最后一行。
/b 以二进制模式逐字节比较两个文件,并且在发现不匹配后不尝试重新同步文件。 在比较具有以下文件扩展名的文件时,这是默认模式:.exe、.com、.sys、.obj、.lib 或 .bin。
/c 忽略字母大小写。
/l 逐行比较 ASCII 模式下的文件,并在发现不匹配后尝试重新同步文件。 在比较具有以下文件扩展名之外的文件时,这是默认模式:.exe、.com、.sys、.obj、.lib 或 .bin。
/lb<n> 将内部行缓冲区的行数设置为 N。行缓冲区的默认长度为 100 行。 如果要比较的文件有超过 100 行的连续不同 行,fc 将取消比较。
/n ASCII 比较过程中将显示行号。
/off[line] 如果文件设置了脱机属性,则不会被跳过。
/t 防止 fc 将制表符转换为空格。 默认行为是将制表符视为空格,并在每八个字符的位置停止。
/u 将文件作为 Unicode 文本文件进行比较。
/w 在比较过程中压缩空格(即制表符和空格)。 如果一行包含许多连续的空格或制表符,则 /w 将这些字符视为单个空格。 与 /w 一起使用时, fc 会忽略行首和行尾的空格。
/<nnnn> 指定在 fc 认为要重新同步的文件之前,在不匹配后必须匹配的连续行数。 如果文件中的匹配行数小于 nnnn,则 fc 将匹配行显示为差异。 默认值为 2。
[<drive1>:][<path1>]<filename1> 指定要比较的第一个文件或文件集的位置和名称。 filename1 是必需的。
[<drive2>:][<path2>]<filename2> 指定要比较的第二个文件或文件集的位置和名称。 filename2 是必需的。
/? 在命令提示符下显示帮助。

Exit codes

下表列出了每个 fc.exe 退出代码和说明。

Exit code Description
0 文件相同。
1 文件不同。
2 比较期间发生错误。

Remarks

  • 此命令由 c:\WINDOWS\fc.exe 实现。 可以在 PowerShell 中使用此命令,但请务必拼写出完整的可执行文件 (fc.exe),因为“fc”也是 Format-Custom(格式自定义)的别名。

  • 使用 fc 进行 ASCII 比较时, fc 按以下顺序显示两个文件之间的差异:

    • 第一个文件的名称

    • 文件名 1 中文件之间不同的行

    • 两个文件中要匹配的第一行

    • 第二个文件的名称

    • filename2 中不同的行

    • 要匹配的第一行

  • /b 以以下语法显示在二进制比较期间发现的不匹配:

    \<XXXXXXXX: YY ZZ>

    XXXXXXXX 的值指定从文件开头开始测量的字节对的相对十六进制地址。 地址从 00000000 开始。 YYZZ 的十六进制值分别表示 filename1filename2 中不匹配的字节。

  • 可以在 filename1filename2 中使用通配符(*)。 如果在 filename1 中使用通配 符,fc 会将所有指定的文件与 filename2 指定的文件或文件集进行比较。 如果在 filename2 中使用通配 符,fc 将使用 filename1 中的相应值。

  • 比较 ASCII 文件时, fc 使用内部缓冲区(足够大,可以容纳 100 行)作为存储。 如果文件大于缓冲 区,fc 会比较它可以加载到缓冲区中的内容。 如果 fc 在文件的加载部分找不到匹配项,它将停止并显示以下消息:

    Resynch failed. Files are too different.

    当比较大于可用内存的二进制文件时, fc 会完全比较两个文件,将内存中的部分与磁盘中的下一个部分叠加在一起。 输出与完全适合内存的文件的输出相同。

Examples

要对两个文本文件 monthly.rptsales.rpt 进行 ASCII 比较,并以缩写格式显示结果,请键入:

fc /a monthly.rpt sales.rpt

要对两个批处理文件( profits.batearnings.bat)进行二进制比较,请键入:

fc /b profits.bat earnings.bat

将显示类似于以下内容的结果:

00000002: 72 43
00000004: 65 3A
0000000E: 56 92
000005E8: 00 6E
FC: earnings.bat longer than profits.bat

如果 profits.bat 和 earnings.bat 文件 相同,fc 将显示以下消息:

Comparing files profits.bat and earnings.bat
FC: no differences encountered

要将当前目录中的每个 .bat 文件与文件 new.bat进行比较,请键入:

fc *.bat new.bat

要将驱动器 C 上的文件 new.bat 与驱动器 D 上的文件 new.bat 进行比较,请键入:

fc c:new.bat d:*.bat

要将驱动器 C 上根目录中的每个批处理文件与驱动器 D 上根目录中同名的文件进行比较,请键入:

fc c:*.bat d:*.bat