Word 文档对比工具 ExtDiff 上手教程:3 种用法 5 分钟搞定 docx 文件差异
【免费下载链接】ExtDiffCompare documents using MS Word from the command line.项目地址: https://gitcode.com/gh_mirrors/ex/ExtDiff
写文档改方案最怕什么?十有八九是"两个 Word 版本到底哪里不一样"。ExtDiff 正是为解决这个痛点而生的免费命令行工具:它借助 Microsoft Word 自带的文档比较能力,通过一行命令或一次拖拽,就能把新老两份 docx 文件的差异高亮标注出来,全程无需安装任何额外的对比软件。
为什么你需要一个"Word 专用"的差异比较工具
先看三个你大概率踩过的坑:
- 普通 diff 工具认不出 docx。docx 本质是压缩包格式,diff 工具打开看到的是一堆 XML 乱码,而不是"这句话被删了、那段被改过"的直观结果。
- 手动逐段比对效率太低。文档一长,肉眼找差异堪比玩"大家来找茬",改过一个小数点都能漏掉。
- Word 自带的比较功能入口深、步骤多。每次都要"审阅 → 比较 → 选择文件",还要记得保存路径,重复操作极其繁琐。
ExtDiff 的思路很简单却极其有效:它通过 COM 自动化直接调用 Word 内置的Compare 功能,把繁琐操作压缩成一条命令。你只需要提供旧文件和修订版文件,剩下的标记修订、高亮差异全部交给 Word 完成。
整个项目非常轻量,核心就是这几个文件,全部可以直接查看或修改:
| 文件 | 作用 |
|---|---|
| Diff-Word.ps1 | 命令行对比的核心脚本 |
| Gui-Diff-Word.ps1 | 图形拖拽界面的实现 |
| diff-word.cmd | 命令行入口的批处理代理 |
| diff-word-wrapper.cmd | 专为 Git 集成准备的包装脚本 |
| start-gui.cmd | 一键打开图形界面的入口 |
| docs/ui-screenshot.png | 图形界面的效果截图 |
开始之前:先确认 3 个前置条件
在动手之前,花 30 秒确认环境是否满足要求,可以避免后面踩坑:
- 操作系统是 Windows。脚本基于 Windows 的 PowerShell 和 COM 机制运行,这是硬性前提。
- 已安装 Microsoft Word。ExtDiff 本身不实现"比较算法",它调用的是你电脑上安装的 Word(2010 及以上版本均可),所以 Word 是必须的。
- 拿到项目文件。最简单的办法是直接克隆仓库:
git clone https://gitcode.com/gh_mirrors/ex/ExtDiff克隆完成后,把命令行切换到项目目录,就可以开始第一次比较了。
3 分钟跑通第一次命令行对比
命令行用法是整个工具的"主菜",也是最容易上手的部分。先准备好两份文档,比如draft.docx(旧版)和final.docx(修订版),然后执行:
powershell -File Diff-Word.ps1 draft.docx final.docx如果你更习惯用批处理文件,效果完全一样,命令还能短一截:
diff-word.cmd draft.docx final.docx命令执行后,Word 会自动打开并显示一个"比较结果"窗口,所有增删改的内容都以修订标记的形式清晰呈现,操作逻辑和 Word 内建的比较完全一致,只是省去了所有手动步骤。
这里有两个贴心的小细节值得一说:
- 路径兼容
~等 PowerShell 写法。脚本内部会用Resolve-Path解析你传入的路径,所以即使路径是相对路径或带波浪号的形式也能正确识别。 - 自动处理只读文件。Word 无法直接比较只读文件,脚本会检测并自动去除旧文件的只读属性,避免比较中途报错。
不想敲命令?用图形界面拖拽对比
如果你觉得记命令太麻烦,或者对方是"双击党",那一定要试试图形界面。直接运行:
start-gui.cmd屏幕上会弹出一个固定在所有窗口最上层的小窗体(就是上面截图里的样子),用法简单到不需要任何说明:
- 从资源管理器里把旧文档拖进上面那个输入框;
- 把修订版文档拖进下面那个输入框;
- 点击Compare按钮,Word 就会带着比较结果窗口弹出来。
窗口"永远置顶"这个设计细节非常实用——你从资源管理器拖文件时,窗体不会被其他窗口挡住。拖拽完成后点击Clear按钮,两个输入框会被清空,窗体也会重新回到置顶状态,方便你连续比较多组文档。
对比一下:命令行适合批量操作和 Git 集成,图形界面适合临时快速比对,两种方式互补,覆盖了绝大多数使用场景。
进阶玩法:让 git diff 也能对比 Word 文档
如果你把 Word 文档放在 Git 仓库里,一定体验过这种挫败感:git diff看 docx 只会输出一堆二进制乱码,改没改、改了啥全靠猜。ExtDiff 提供了一条很优雅的解决路径——把 Word 配置成 Git 的 docx 专用 diff 工具。
操作只有两步,全程不需要写代码。
第 1 步:配置.gitattributes
在仓库根目录新建或打开.gitattributes文件,加入一行:
*.docx diff=word这行配置的意思是:所有 docx 文件都使用名为word的自定义 diff 驱动。
如果你希望所有仓库都生效,可以把.gitattributes放在用户主目录,再执行一条命令让它全局生效:
git config --global core.attributesfile ~/.gitattributes第 2 步:配置.gitconfig
在用户主目录的.gitconfig文件末尾追加如下内容:
[diff "word"] command = <ExtDiff所在目录>/diff-word-wrapper.cmd把<ExtDiff所在目录>替换成你克隆项目时实际的磁盘路径即可。
这里必须为 diff-word-wrapper.cmd 点赞:Git 在调用外部 diff 工具时会传入一大串参数,这个包装脚本专门做了参数适配(把第 2 个和第 5 个参数——即新旧临时文件路径——提取出来转交给 diff-word.cmd),相当于帮 Git 和 ExtDiff 之间搭了一座桥。配置完成后,再执行git diff看 docx 文件,弹出的就是 Word 的比较窗口,改动一目了然。
遇到报错怎么办:3 个高频问题排查
任何工具都难免有意外,这里把最高频的 3 类问题列出来,方便你对症下药:
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| 报错提示 Word 无法打开文档 | 目标文件正被其他程序占用,或路径拼写有误 | 关闭占用程序;确认两个文件路径真实存在,文件名和扩展名完整 |
| 弹窗提示 COM 相关错误 | 系统里没有安装 Word,或 Office 安装不完整 | 安装/修复 Microsoft Word,并确认能正常手动打开 docx |
| 文件比较结果未包含某些改动 | 其中一个文件是只读或带修订的副本 | 确认传入的是"纯净"的旧版与新版;脚本会自动处理只读属性,若仍异常可手动去掉只读后重试 |
脚本捕获到异常时会弹出 Windows 消息框直接显示错误内容,这条信息非常关键,把它复制出来去搜索或反馈,定位问题会快得多。
下一步:把 ExtDiff 用出更多花样
到这里,命令行、图形界面、Git 集成三种用法你都已经掌握了。接下来想更进一步,可以试试这些方向:
- 阅读 Diff-Word.ps1 源码,看看 COM 调用的核心逻辑,按需定制比较参数(例如修改 Gui-Diff-Word.ps1 里的窗口尺寸或按钮文案);
- 把
*.docx diff=word扩展到更多后缀,比如*.doc、*.rtf,让其他格式的文档也享受同样的待遇; - 翻一翻 CHANGELOG.md 了解版本演进脉络,顺手在 License.md 确认一下 MIT 协议下的使用边界,放心把它接入你的日常工具链。
从今天起,再遇到"这版改了什么"的灵魂拷问,记得有 ExtDiff 这个免费小工具替你兜底。
【免费下载链接】ExtDiffCompare documents using MS Word from the command line.项目地址: https://gitcode.com/gh_mirrors/ex/ExtDiff
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考