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 时,中文行会显示为大段差异,先确认两边编码一致再判断内容是否真的变了。