首页/系统/Windows 运维速查/fc 比较文件差异
CMD 常用命令74 条

fc 比较文件差异

对比两个文本或二进制文件并列出差异区块:脚本时代排查“到底改了什么”的内置工具。

Windows 运维速查系统更新于 2026-10-13

fc 是什么

fc(File Compare)是 Windows CMD 自带的文件比较工具,逐行比较两个文本文件、逐字节比较两个二进制文件,并打印差异区块。脚本时代常用来回答「配置文件被谁改了什么」「两个 exe 是不是同一个版本」。文本模式按行对齐比较,二进制模式只报告首个不同字节的偏移,不能展示后续差异;要忽略空白或做三向合并,需要换专业对比工具。

基本信息

适用平台Windows 7/10/11 与 Windows Server 的 CMD
语法fc [/a] [/b] [/c] [/n] [/l] [/t] 文件1 文件2
参数/a 只显示差异首末行、/b 二进制比较、/c 忽略大小写、/n 显示行号、/l 强制文本比较
文本模式按差异区块输出,并标注来源文件与差异行号
二进制模式报告首个不同字节的十六进制偏移量
退出码0 两个文件相同,1 存在差异

典型使用场景

  • 发布比对:确认新旧配置文件到底改了哪些行,避免漏带参数
  • 版本核验:比较两个二进制文件是否完全一致,判断包有没有被替换
  • 排障回溯:把出错前后的配置各留一份,用 fc 定位改动点
  • 批处理体检:用退出码判断目录内文件是否发生变化,触发后续同步
  • 文本校正:忽略大小写对比人工修改过的清单与基准清单

常用示例

常用示例
fc config.old.ini config.ini          # 文本模式逐行比较
fc /n draft.txt final.txt             # 带行号,便于定位改动
fc /c readme.md readme_old.md         # 忽略大小写比较
fc /a v1.log v2.log                   # 只显示每处差异的首末行
fc /b old.exe new.exe                 # 二进制比较:只看首个不同字节
fc /l unix.txt win.txt                # 强制按文本比较(仍受换行影响)
if errorlevel 1 echo 文件有差异

输出怎么读

输出形态含义常见误判
***** 文件名下面开始列出该文件的差异行并非报错,只是分段标题
行号 行内容文本模式下差异行的行号与原文换行符不同会整篇都标差异
00000000: xx yy二进制模式首个不同字节的偏移与取值只报第一处,后面差异不会列出
FC: 找不到差异两文件内容一致文本模式对空白敏感,未必真一致
文本模式对空白与换行敏感:Unix 的 LF 文件与 Windows 的 CRLF 文件会被判为「每一行都不同」,看起来像整篇重写,先统一换行再比较。
二进制模式只报告第一处差异就结束,用来确认「是不是同一个文件」很快,用来找全部改动不合适;批量比对可换 PowerShell 的 Compare-Object 或哈希校验。

目录与批量对比的替代做法

目录与批量对比的替代做法
Compare-Object (Get-Content a.txt) (Get-Content b.txt)   # 逐行差异对象
Get-FileHash a.iso, b.iso -Algorithm SHA256               # 大文件用哈希判等
robocopy C:\new D:\old /L /NJH /NJS /NDL /NP /XO          # 只列出较新/不同文件
fc 的比较结果依赖编码:一个文件是 UTF-8、另一个是 GBK 时,中文行会显示为大段差异,先确认两边编码一致再判断内容是否真的变了。

易错点

  • 拿 fc 比较 UTF-8 与 GBK 的中文文件,会把编码差异误读成内容改动,结论完全失真
  • 比较 Unix 换行与 Windows 换行的文本时全篇都标差异,容易误判为「文件被大改」
  • 用 fc /b 找全部二进制差异:它只报首个不同字节,后续差异不会出现
  • 把 fc 的输出当成可解析格式写进脚本:文案随系统语言变化(中文系统为中文),应改判退出码

数据来源与参考

  • Microsoft Learn:fc 命令

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌