您的供应商被收购,所有提及它的合同、进度表、预算和幻灯片中,“ACME Corp”现在已变为“Globex Ltd”。在本地运行的 GroupDocs.Editor MCP 服务器配合 Claude Desktop、Cursor 或 Copilot 可以批量完成此操作:对文件夹中的每个文件调用 replace_text,保持格式,报告更改的出现次数,对从未提及旧名称的文件不生成任何文件。没有任何内容被上传,原始文件也不会被覆盖:
将 ACME Corp 重命名为 Globex Ltd,遍历 contracts 文件夹中的所有文档,保持格式,并给出每个文件的计数。
逐步操作指南位于文档中:在不破坏格式的情况下跨文件夹查找并替换文本。
为什么这项工作适合工具而不适合模型?
因为结果必须可检查。四十份文档肉眼比对太费力,而模型直接“更新所有合同”则没有可供核对的依据。查找替换工具会为每个文件提供一个计数。计数即审计轨迹:你知道哪些文件被修改、修改了多少以及哪些文件根本不需要修改。
它还必须以恰当的方式保持单调。粗体的公司名称仍保持粗体,费用表格保持网格,标题保持样式。模型永远不会重新键入文档:引擎打开文档,替换词语并写出副本。服务器 26.10.0 有一个小问题:该副本是从引擎的 HTML 编辑模型写出的,Word 页脚不会被保留下来。若合同在页脚中写有供应商名称,则需要使用分页的 HTML 循环;FAQ 列出了 Word 文档会保留的内容。
代理看到的内容
从 GroupDocs.Editor.Mcp 26.10.0 对一小批合成文档的捕获:一份服务协议、一份 NDA、一封欢迎信、一份三页预算以及一份三页审阅幻灯片。
-> replace_text {"file":{"filePath":"contracts/msa-northwind.docx"},
"find":"ACME Corp","replace":"Globex Ltd","wholeWord":true}
<- Replaced 6 occurrence(s) of 'ACME Corp' in 'msa-northwind.docx'
Saved to: …/msa-northwind_edited.docx
-> replace_text {"file":{"filePath":"contracts/nda-northwind.docx"}, ...}
<- Replaced 1 occurrence(s) of 'ACME Corp' in 'nda-northwind.docx'
-> replace_text {"file":{"filePath":"contracts/welcome-letter.docx"}, ...}
<- Text replacement found no matches for 'ACME Corp' in
'welcome-letter.docx'. No file was written.
-> replace_text {"file":{"filePath":"budget.xlsx"}, ..., "worksheet":1}
<- Replaced 1 occurrence(s) of 'ACME Corp' in worksheet 1 of 3 of
'budget.xlsx'
-> replace_text {"file":{"filePath":"review.pptx"}, ..., "slide":1}
<- Replaced 1 occurrence(s) of 'ACME Corp' in slide 1 of 3 of
'review.pptx'
代理的报告会自行生成:协议中有六处,NDA 中有一处,欢迎信中没有,预算摘要中有一处,第一张幻灯片中有一处。
循环流程
contracts/ + budget.xlsx + review.pptx
|
+-- for each file:
| replace_text {"find":"ACME Corp","replace":"Globex Ltd",
| "wholeWord":true} (+ "worksheet"/"slide")
| -> "Replaced N occurrence(s) ..." -> <name>_edited.<ext>
| -> "found no matches ... No file was written."
|
'-- report: file -> count; files with 0 listed separately
有两点习惯可以让循环更可靠。对名称使用 wholeWord: true,这样 “ACME Corp” 不会匹配到 “ACME Corporation Holdings”。并让代理列出零匹配的文件,因为在你预期会被修改的文件中出现零,正是需要二次检查的地方。
在替换之前检查批处理
编辑后的副本会与原件并列保存,直到你决定如何处理,这正是检查的时机。三项低成本检查几乎可以捕获所有问题。将每个文件的计数与预期对比:如果一份协议在每页都提到供应商,则不应只报告一次。不要依赖再次运行相同的替换:跨格式的短语在第二次仍会被漏掉,而 “found no matches” 看起来像是全部通过。让代理对每个编辑后的副本运行 extract_html;它的纯文本预览会合并格式运行,从而显示残留的 “ACME Corp”。变体拼写(如带句点的 “Acme Corp.”、 “ACME Corporation”)需要使用 matchCase: false 或正则表达式再跑一次。最后打开每种类型的一个编辑文件——合同、工作簿和幻灯片——确认格式以及页脚是否完整。只有在此之后才将 _edited 文件覆盖原件,或让你的文档系统进行版本管理。
在同一次调用中处理模式、大小写和格式
重命名是最常见的场景,但同一工具也能覆盖 “使措辞保持一致” 系列的其他需求。在同一次测试运行中:
-> replace_text {"file":{"filePath":"contracts/nda-northwind.docx"},
"find":"v2\\.3\\b","replace":"v2.4","regex":true,
"outputName":"nda-northwind-v2.4.docx"}
<- Replaced 1 occurrence(s) of 'v2\.3\b' in 'nda-northwind.docx'
-> replace_text {"file":{"filePath":"contracts/nda-northwind.docx"},
"find":"acme corp","replace":"Globex Ltd","matchCase":false,
"format":"pdf"}
<- Replaced 1 occurrence(s) of 'acme corp' in 'nda-northwind.docx'
Saved to: …/nda-northwind_edited.pdf
regex: true 使用 .NET 正则表达式,这正是对文件夹中版本号或日期格式进行批量修改的方式。matchCase: false 能捕获大小写不一致的情况。format: "pdf" 在一次操作中完成编辑并转换,生成供另一端使用的副本。
给编码代理的旁注
相同的模式同样适用于代码仓库。DOCX 格式的发行说明和 XLSX 格式的规格说明对 sed 来说是不可见的;使用该服务器的 Claude Code 可以在两者中同步提升版本号,作为发布任务的一部分。将规则写入项目说明,让代理使用工具而不是手动解压 Office 文件:
To change wording in .docx/.xlsx/.pptx/.pdf files in this repo, use the
groupdocs-editor MCP server's replace_text (wholeWord for names, regex for
versions). Report the count per file. Never rewrite an Office file by hand.
真实限制
- 匹配仅在单个格式运行内进行。在我们的协议中,第七个 “ACME Corp”(其中 “ACME” 为斜体)未被替换,计数为六正是体现了这一点。跨样式的短语需要 HTML 循环才能处理。
- 每个结果都会以
<name>_edited.<ext>的形式写入输出文件夹根目录,即使原文件位于子文件夹。不会覆盖任何文件:如果目标名称已被占用,会在文件名后加编号(msa-northwind_edited (1).docx),因此在可能冲突时请使用outputName指定名称。 - 在服务器 26.10.0 上,Word 文档的编辑副本会丢失页脚,内容控件会被展平为纯文本。请检查那些在页脚中包含旧名称的文档。
- 电子表格和演示文稿一次只能编辑一个工作表或幻灯片。在评估模式下仅能编辑前两页,服务器会提示:“Evaluation mode edits only the first 2 slides of a presentation; slide 3 is beyond them.”
- 评估模式还会在每个输出文件顶部添加横幅行,且超过两页的 PDF 会被拒绝。
FAQ
它能在一次批处理里同时替换 Word、Excel 和 PowerPoint 中的文本吗?
是的。代理对每个文件调用相同的工具,并为工作簿和幻灯片分别添加 worksheet 或 slide 参数。
我如何知道哪些文件被修改了?
每次调用都会返回计数,未匹配的文件根本不会生成。让代理提供每个文件的统计表即可。
原始文件会被覆盖吗?
不会。每次编辑都会生成新文件,原始文件保持不变,直至你自行替换为止。
深入了解
- 文档、权威指南:在不破坏格式的情况下跨文件夹查找并替换文本
- 文档中心:GroupDocs.Editor MCP Server
- GroupDocs.Editor MCP 产品页面 — 一键安装 VS Code 与 Cursor,提供所有其他客户端的配置
- 入门指南:为什么 AI 代理不应通过重写文档来更改三个词
- 相关内容:使用 AI 代理从电子表格填充 Word 表单,本地执行
- 相关内容:编辑单个工作表,保留工作簿:通过 HTML 循环进行外科手术式编辑
- 相关内容:使用 AI 代理编辑 PDF?先本地转换为 Word 再编辑
- 本地部署与安全模型:AI 文档处理的三种架构,以及保持文件在网络内部的方案
- 问题讨论:GroupDocs Editor 论坛
- 源代码:GroupDocs.Editor.Mcp on GitHub · NuGet 包