菜鸟科技网

cmd fc命令

fcFile Compare(文件比较)的缩写,它是一个非常实用的命令行工具,用于比较两个文件或两个文件集的差异,并以易于阅读的格式显示出来。

cmd fc命令-图1
(图片来源网络,侵删)

fc 命令可以:

  1. 比较文本文件:这是最常见的用法,它会逐行比较两个文本文件,并显示它们之间的不同之处。
  2. 比较二进制文件:虽然主要用于文本,但它也可以比较二进制文件,但输出结果会非常简略,只报告文件是否相同。
  3. 比较文件集:可以使用通配符( 和 )来比较两个目录下的多对文件。

语法

fc 命令的基本语法如下:

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

或者用于比较目录:

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

常用参数详解

下面是 fc 命令中最常用和最重要的参数:

cmd fc命令-图2
(图片来源网络,侵删)
参数 全称 说明
/a Abbreviated 压缩 ASCII 模式,只显示有差异的行,并跳过多余的空白行,使输出更紧凑。
/c Case Insensitive 忽略大小写,在比较时,将所有字母视为大小写相同。Hellohello 会被视为相同。
/l Long Lines 长行模式,这是默认模式,适用于大多数文本文件,它会逐行比较,行长度不受限制。
/lb<n> Line Buffer Size 设置内部行缓冲区的大小<n> 是一个数字,范围从 100 到 10000,默认值是 100,如果文件包含非常长的行,可能需要增加此值以避免错误。
/n Line Numbers 显示行号,在输出差异时,在每一行前面加上其在文件中的行号,方便定位。
/off[line] Offline 不要跳过具有“脱机”属性的文件。
/t Tabs 不将制表符转换为空格,默认情况下,fc 会将制表符视为等效的空格进行比对,此参数可以禁用该行为。
/u Unicode 以 Unicode 模式比较文件。
/w Compress Whitespaces 压缩空白,在比较时,将一个或多个连续的空格或制表符视为一个空格,这有助于忽略格式差异,专注于内容。
/d Directories 比较两个目录中的文件,它会按文件名比较两个目录下所有同名文件。
/c Case Sensitive 区分大小写,这是默认行为,在比较文件集时使用。
/n Numeric 按数字顺序比较文件,在比较文件集时使用。

使用示例

假设我们有以下两个文本文件 file1.txtfile2.txt

file1.txt

Hello World.
This is the first file.
Line 3 is here.
The end.

file2.txt

Hello World.
This is the second file.
Line 3 is here.
The end is near.

示例 1:基本比较(默认模式)

直接比较两个文件,fc 会使用默认的长行模式。

cmd fc命令-图3
(图片来源网络,侵删)
fc file1.txt file2.txt

输出解释:

----- file1.txt
----- file2.txt
***** file1.txt
This is the first file.
***** file2.txt
This is the second file.
***** file1.txt
The end.
***** file2.txt
The end is near.
  • ----- filename:表示接下来显示的是该文件的内容。
  • ***** filename:表示接下来显示的是该文件中与另一个文件不同的行。

示例 2:使用 /n 参数显示行号

这能让你更快地找到问题所在。

fc /n file1.txt file2.txt

输出:

***** file1.txt
00002: This is the first file.
***** file2.txt
00002: This is the second file.
***** file1.txt
00004: The end.
***** file2.txt
00004: The end is near.

(注:第一行 "Hello World." 相同,所以没有显示)

示例 3:使用 /c 参数忽略大小写

假设 file1.txt 中有 Applefile2.txt 中有 apple

fc /c file1.txt file2.txt

这样 Appleapple 会被视为相同,不会标记为差异。

示例 4:使用 /w 参数压缩空白

假设 file1.txt 中有 word1 word2file2.txt 中有 word1 word2(多个空格)。

fc /w file1.txt file2.txt

这两行会被视为相同,因为 /w 参数将连续的空格压缩成了一个。

示例 5:比较两个目录下的所有文件

假设你有两个目录 dir1dir2,里面都有 config.inidata.txt 文件。

fc /d dir1 dir2

这个命令会依次比较 dir1\config.inidir2\config.ini,然后比较 dir1\data.txtdir2\data.txt,并报告每一对文件的差异。


退出代码

fc 命令执行后会返回一个退出代码,可以在批处理脚本中通过 %errorlevel% 变量获取。

退出代码 含义
0 比较的文件完全相同。
1 比较的文件有差异。
2 出现了错误,找不到文件、参数无效等。

批处理脚本示例:

@echo off
fc /n file1.txt file2.txt > nul
if %errorlevel% equ 0 (
    echo 文件内容完全相同。
) else if %errorlevel% equ 1 (
    echo 文件内容有差异。
) else (
    echo 比较过程中发生错误。
)

compdiff 的区别

  • fc vs comp

    • fc (File Compare) 是一个更强大、功能更丰富的工具,专为 Windows 设计,提供详细的、可读的文本差异报告。
    • comp (Compare) 是一个更古老的工具,主要用于比较二进制文件,其文本比较功能非常有限且输出不友好,在现代 Windows 中,fc 几乎总是更好的选择。
  • fc vs diff

    • fc 是 Windows 原生的命令。
    • diff 是源自 Unix/Linux 世界的标准工具,在通过 Git Bash、WSL 等环境使用时非常常见。diff 的输出格式(如 "unified diff" 或 "context diff")在开发者社区中更为标准化,常用于版本控制系统(如 Git)。
    • 如果你习惯于 Linux 环境,或者需要将输出直接用于某些开发工具,diff 可能更方便,如果你只想在 Windows 命令行下快速比较两个文件,fc 就足够了。

fc 是 Windows 系统管理员和高级用户一个非常得力的助手,无论是检查配置文件的修改、对比日志文件,还是在脚本中实现文件校验,fc 都能高效地完成任务。/n(显示行号)和 /c(忽略大小写)这两个最常用的参数,就能解决大部分日常问题。

分享:
扫描分享到社交APP
上一篇
下一篇