ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

只需一条命令就能对比两份 Word 文档?ExtDiff 快速上手与 Git 集成教程

只需一条命令就能对比两份 Word 文档?ExtDiff 快速上手与 Git 集成教程

只需一条命令就能对比两份 Word 文档?ExtDiff 快速上手与 Git 集成教程

【免费下载链接】ExtDiffCompare documents using MS Word from the command line.项目地址: https://gitcode.com/gh_mirrors/ex/ExtDiff

收到同事发来的"最终版2.0.docx",你一边开着旧文件一边开着新文件来回切换,红着眼睛找改动点——这种痛苦,做过文档协作的人都懂。如果能像git diff一样,一条命令就看出两份 Word 文档的差异呢?ExtDiff 正是为此而生:一个用 PowerShell 调用微软 Word 内置对比功能的小工具,让.docx文档对比变得和代码 diff 一样干脆。下面带你从零跑通它,再把它接进 Git,让版本控制真正管住你的文档。

1. 先搞懂它在解决什么问题

一句话概括:ExtDiff 是"命令行版的 Word 文档对比器"。它自己不做任何文档解析,而是通过 COM 自动化,把"比较文档"这个动作交给 Word 本体去完成。所以你最终看到的对比结果,就是 Word 原汁原味的修订模式——删除的内容划线、新增的内容标色,完全符合你平时用 Word 审阅的习惯。

它主要服务于 Word 系文件(.docx.doc),特别适合写文档、做合同的团队。如果你只是对比两个纯文本文件,有更轻量的工具可用;ExtDiff 的价值,恰恰在于把"文档人"和"命令行"这两件看似不搭的事连了起来。

2. 3 分钟快速上手:从克隆到看到第一份对比结果

先确认环境,三样缺一不可:

  • Windows 系统:脚本依赖 COM 自动化,Linux/macOS 用不了;
  • 已安装 Microsoft Word:任意较新版本即可;
  • PowerShell:Windows 自带,无需额外安装。

接下来克隆项目:

git clone https://gitcode.com/gh_mirrors/ex/ExtDiff

人话:把项目下载到本地,整个仓库只有几个文件,不需要任何安装流程,下载完就能用。

然后对比两份文档,二选一:

diff-word.cmd old.docx new.docx

或者直接用 PowerShell:

powershell -File Diff-Word.ps1 old.docx new.docx

执行后 Word 会自动启动并打开一个新文档,把old.docx(旧版)和new.docx(新版)之间的差异以修订标记的形式呈现出来,增删改一目了然,对比完成后原文件也不会被改动。到这里,你已经完成了第一次"命令行对比 Word 文档" 🚀

3. 三个核心文件,一句话讲透

项目文件不多,真正需要认识的就三个:

Diff-Word.ps1:真正干活的脚本

它做了三件事:把传入的两个路径解析成绝对路径 → 用New-Object -ComObject Word.Application在后台启动 Word → 调用document.Compare(...)让 Word 执行对比。人话就是,它是个"遥控器",按下按钮让 Word 自己去比较

脚本里还有两处贴心细节:常量wdDoNotSaveChanges = 0表示对比完不保存原文档;开头会先解除文件的只读属性,因为Word 无法对比只读文件

diff-word.cmd:给懒人准备的"壳"

.cmd文件不能直接调用.ps1,所以它负责用powershell.exe -File把参数原样转交给脚本,让你在 CMD 里也能舒服地使用。你平时完全可以只记住diff-word.cmd这一条命令。

start-gui.cmd+Gui-Diff-Word.ps1:拖拽版界面

如果你不想记命令,运行start-gui.cmd会弹出一个置顶的小窗口:把两个文件从资源管理器直接拖进输入框,点Compare出结果,点Clear清空重来。界面简单到不能再简单:

对不熟命令行的同事,把start-gui.cmd丢给他就够了。

4. 小实战:让git diff直接对比 docx

这一步 10 分钟能搞定,做完之后,你在 Git 仓库里改动.docx并执行git diff,差异会直接以 Word 对比窗口的形式弹出来,不再是一堆乱码。

第一步:在仓库根目录创建(或修改).gitattributes,加一行:

*.docx diff=word

人话:告诉 Git,"所有.docx文件,用名为word的自定义对比工具来处理"。

第二步:编辑家目录下的.gitconfig,追加:

[diff "word"] command = /path/to/ExtDiff/diff-word-wrapper.cmd

人话:把word这个名字指向 ExtDiff 的包装脚本,路径换成你电脑上仓库的真实位置。

第三步:改动一个.docx并提交,然后执行git diff验收成果。

这里有个小知识点:git diff传给自定义工具的参数很多,而diff-word-wrapper.cmd只把%2(旧文件)和%5(新文件)转发给了diff-word.cmd——这个"挑参数、转手"的动作,就是它存在的全部意义

5. 新手最容易踩的 5 个坑

  1. 没装 Word 或只装了 WPS:脚本通过Word.Application这个 COM 组件找 Word,WPS 不注册该组件,会直接报错。解决:安装 MS Word 再试。
  2. PowerShell 提示"禁止运行脚本":被执行策略拦住了。解决:用管理员身份运行Set-ExecutionPolicy RemoteSigned,或者干脆走diff-word.cmd(CMD 不受该策略限制)。
  3. 路径带空格或中文报"找不到文件":给路径加上英文双引号即可;脚本内部已用Resolve-Path解析成绝对路径,还支持~表示主目录。
  4. 配置好 Git 集成后git diff没反应:九成是.gitconfig里的command路径写错,或.gitattributes没生效。核对路径是否真实存在,确认文件在仓库根目录。
  5. 对比结果方向反了old放前面、new放后面,顺序颠倒会把增删方向弄反,看起来像"改动回退" ⚠️

6. 现在,去把文档纳管起来吧

ExtDiff 的全部价值可以浓缩成一句话:把专业但琐碎的 Word 文档对比,压缩成一条命令。如果你身处文档驱动的团队,把.docx纳入 Git、再用上这个小工具,整个协作链路会顺畅很多。觉得它好用就顺手点个 Star;想深入了解实现细节,仓库里的 Readme 和 CHANGELOG 记录了它从 2016 年至今的每一步演进,值得一读。

【免费下载链接】ExtDiffCompare documents using MS Word from the command line.项目地址: https://gitcode.com/gh_mirrors/ex/ExtDiff

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表