当前位置: 首页 > news >正文

ExtDiff 使用指南:3 步让 Word 自动对比两份文档

ExtDiff 使用指南:3 步让 Word 自动对比两份文档

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

你有没有经历过这种崩溃瞬间:同事发来一份"改好了"的 Word 文档,你打开后对着两个版本逐页翻找,眼睛都快看花了,才勉强找到几处改动?又或者,你习惯用git diff追代码变更,但仓库里混进了.docx文件,一 diff 全是乱码和 XML 标签?

ExtDiff就是为解决这个问题而生的:它是一个极小的命令行工具,通过 COM 自动化调用 Microsoft Word 自带的"比较文档"功能,一条命令就能让 Word 自动打开两份文档的对比结果,改动之处以修订标记清晰呈现。更妙的是,你还可以把它接入 Git,让git diff直接读懂 Word 文件。下面这份实战指南,带你 3 步上手。

为什么你需要一个"文档版 diff"

Word 的"审阅 → 比较"功能本身很好用,但它藏在菜单深处:你得先打开文档 → 点"审阅" → 点"比较" → 弹窗里选文件 → 点确定,整整五步操作。如果一个月要比十几次文档,这套流程足以让人烦躁。

而 .docx 本质上是压缩包里的 XML,用文本 diff 工具看它无异于读天书。ExtDiff 的定位就是"文档界的 diff 工具":把 Word 原生的对比能力变成一条命令、一个按钮,甚至一种 Git 工作流,让"对比文档"这件事从手动劳动变成自动执行。

快速上手指南:3 步跑起来 🚀

先确认你的环境满足这三个条件,缺一不可:

  • Windows 系统(脚本基于 PowerShell 和 COM 自动化)
  • 已安装 Microsoft Word(WPS 不兼容,必须是 MS Office 的 Word)
  • PowerShell 可用(Win10 / Win11 自带)

然后按下面的步骤操作:

第 1 步:获取项目代码

打开 PowerShell,执行克隆命令:

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

第 2 步:运行对比命令

进入项目目录,把两个文档路径传给diff-word.cmd(第一个是旧版,第二个是新版):

cd ExtDiff diff-word.cmd old.docx new.docx

第 3 步:查看对比结果

此时 Word 会自动启动,并打开一个名为 "Comparison" 的新文档——增删改的内容全部以修订标记显示,旧版窗口随后自动关闭,只保留对比结果。就这样,3 步完成一次文档对比。

如果你不想敲命令,双击start-gui.cmd还能打开一个图形窗口,效果见下图。

核心功能逐个击破

命令行对比:一条命令出结果

命令行入口是[Diff-Word.ps1](https://link.gitcode.com/i/046eebc229e573bee16117792a74cea5)diff-word.cmd只是它的批处理代理)。核心逻辑其实只有几行,关键点在注释里:

$document = $word.Documents.Open($BaseFileName, $false, $false) # 打开旧版文档(不显示、不弹窗) $document.Compare($ChangedFileName, [ref]"Comparison", ...) # 调用 Word 内置的 Compare 功能 $document.Close([ref]$wdDoNotSaveChanges) # 关闭旧版窗口,只留下对比结果

脚本还替你处理了两个隐藏坑:一是先解析文件路径,所以~这类 PowerShell 路径也能用;二是自动去掉旧版文件的只读属性,否则 Word 会拒绝比较只读文件。

图形界面:把文件拖进对比框 🖱️

双击start-gui.cmd即可打开图形界面,它调用的脚本是[Gui-Diff-Word.ps1](https://link.gitcode.com/i/9832fccc664cff0174178505df1c8925)

上图是 1.3.0 新增的界面:注意窗口默认"置顶"显示,方便你从资源管理器拖文件进来。

界面设计很贴心:窗口始终浮在所有窗口之上(TopMost),你只需把旧版文档拖到第一个输入框、新版拖到第二个,然后点击Compare按钮,Word 就会照常弹出对比结果;点击Clear清空输入,窗口会恢复置顶状态。整个过程鼠标都不用离开,比命令行更直观。

接入 Git:让 git diff 看懂 docx

这是 ExtDiff 最亮眼的功能。普通 Git 无法对二进制 docx 做有意义的 diff,但配置后,git diff会直接调用 Word 帮你对比。

在仓库根目录新建或编辑.gitattributes,加入一行:

*.docx diff=word

再编辑家目录下的.gitconfig,注册一个自定义 diff 工具:

[diff "word"] command = <pathToExtDiffFolder>/diff-word-wrapper.cmd

<pathToExtDiffFolder>替换成本地项目路径。这里的桥梁是[diff-word-wrapper.cmd](https://link.gitcode.com/i/34cc8c1915ca4c27bf4a1e02e46e7e2a),它把 Git 传入的两个文件参数(%2旧版本、%5新版本)转发给diff-word.cmd。如果你想全局生效,可以创建一个全局.gitattributes,再用git config --global core.attributesfile ~/.gitattributes指向它。

实战小案例:给文档仓库配上 Word 对比

把前面所有功能串起来,我们做一个小实验:让一个纯文档仓库具备"看得见"的版本对比。

第 1 步:初始化仓库并配置

git init doc-repo cd doc-repo git config --global core.attributesfile ~/.gitattributes # 指定全局属性文件

在家目录的.gitattributes写入*.docx diff=word,在.gitconfig[diff "word"]小节中填好 wrapper 的绝对路径。

第 2 步:生成两个版本的文档

用 Word 新建report.docx,写上一段话,保存后提交:

git add report.docx git commit -m "v1 初稿"

接着修改文档(增删几行文字),保存但不要提交。

第 3 步:执行对比并观察结果

git diff report.docx

预期效果:Word 被自动唤醒,打开一份带修订标记的对比文档——新增内容以下划线显示、删除内容以删除线显示,旁边还有批注栏标注修改来源。你甚至不需要git diff支持二进制格式,就能像看代码 diff 一样审查文档改动。配合git log回溯历史版本,整个文档仓库的演进史都一目了然。

常见问题与避坑

Q1:运行时报错"找不到类型 [Word.Application]",怎么办?说明系统里没有可用的 Microsoft Word COM 对象。检查是否安装了 MS Office 的 Word(WPS 不提供该 COM 接口),并确认它是 2007 以上版本。

Q2:提示文档被占用或"无法打开文件"?脚本已自动处理只读属性,但如果文档正被另一个 Word 窗口打开,还是会冲突。对比前先关掉相关的 Word 窗口即可。

Q3:配置好 Git 集成后git diff没反应?先确认.gitattributes生效(执行git check-attr diff -- report.docx应输出word),再确认.gitconfig里的路径写对了,最后注意git diff只对比"已跟踪但未提交"的改动,文件第一次加入暂存区(staged)时需要用git diff --cached才能看到。

Q4:PowerShell 提示"禁止运行脚本"?这是执行策略限制。用powershell -ExecutionPolicy Bypass -File Diff-Word.ps1 old.docx new.docx即可绕过,或通过diff-word.cmd间接调用。

Q5:GUI 窗口点了 Compare 后不再置顶了?这是设计行为:对比期间让出置顶,避免遮挡 Word 的对比结果。点一下Clear按钮,窗口就会恢复置顶。

总结与下一步

一句话概括:ExtDiff 用一条命令、一个界面和一套 Git 集成,把 Word 原生的文档对比能力带进了命令行工作流,从此 diff 不再只是代码的专利。现在就下载试试,用它对比你手头最早的一版文档和最晚的一版,感受一下"3 步出结果"的爽快;如果你在项目里发现了更好用的配置方案,欢迎提交反馈,让这个工具惠及更多人。

想深入了解实现细节,可以翻看项目的变更记录 CHANGELOG.md 了解版本演进,或阅读 License.md 确认使用许可。祝你从此告别逐页翻找的文档对比时光!

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

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

http://www.jsqmd.com/news/1406364/

相关文章:

  • 高研值宿舍改造:模块化设计原则与空间优化实操指南
  • Node.js内存溢出:从V8堆限制到内存泄漏排查实战
  • 2026年湘潭纯原木全屋定制源头工厂推荐:无夹心板材不掺贴皮原木定制选择指南 - 汇聚至此
  • illustrator-scripts 脚本库如何让 Illustrator 工作效率翻倍:零基础上手完整指南
  • 一篇文章搞定语音转写进阶:whisperX 词级时间戳与说话人分离实战
  • Win11家庭版共享打印机“凭据不足”问题深度解析与系统化解决方案
  • 打不开组策略编辑器?Policy Plus 手把手带你解锁全版本 Windows 策略管理
  • Dagger Reflect full reflection模式配置与代码改造
  • 电动车托运怎么便宜?2026年个人寄车省钱全攻略 - 快递物流资讯
  • 深入解析alloca函数:栈上动态内存分配的原理、应用与陷阱
  • 2026年湘潭原木全屋定制源头工厂推荐:风格统一门墙柜一体化选择指南 - 汇聚至此
  • Linux密码登录失败排查:从账户状态到哈希比对的完整诊断指南
  • 从TCP协议到连接池:拆解一次网络连接的真实成本与性能优化
  • Cat6网线选型指南:屏蔽与非屏蔽的实战决策与施工要点
  • 告别C盘告急与更新失败:Dism++免费系统优化工具完整使用指南
  • 保存RDD到文件:reference-apps大数据导出实战教程
  • 2026外国人如何在海南开一家外资公司?外籍人士海南注册外资公司流程、签证许可办理,找本地哪家财税代办公司靠谱? - 优企甄选
  • AT_abc471_e
  • UE5蓝图实战:鼠标点击触发角色近战攻击动画与蒙太奇播放
  • TDengine REST API 核心功能与实战应用指南
  • 如何用 Lonkero 测试 GraphQL API?9 种攻击手法全解析
  • 2026同城搬家寄大件哪个快递便宜 本地大件寄件低价渠道汇总 - 快递物流资讯
  • MPTCPv1调度器实现与性能优化指南
  • 澳洲留学生医保OSHC怎么买:第三方问答型场景拆解与反例 - 优企甄选
  • UE5 Niagara实战:从原理到应用,打造动态武器拖尾特效
  • Altium Designer快捷键全解析:从原理到实战的效率提升指南
  • Windows Defender无法启动?系统化排查与修复指南
  • Android开发中AI助手集成指南与优化实践
  • 小程序转 Vue3 终极实战指南:90% 代码自动转换,迁移周期从半年压缩到两周
  • TCP可靠传输核心机制:从滑动窗口到拥塞控制的实战解析