fc

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

语法

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>

参数

参数 说明
/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 是必需的。
/? 在命令提示符下显示帮助。

备注

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

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

    • 第一个文件的名称

    • filename1 中文件之间不同的行

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

    • 第二个文件的名称

    • filename2 中不同的行

    • 要匹配的第一行

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

    \<XXXXXXXX: YY ZZ>

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

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

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

    Resynch failed. Files are too different.

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

示例

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

fc /a monthly.rpt sales.rpt

若要对两个批处理文件(profits.bat 和 earnings.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