تم الاستحواذ على المورد الخاص بك، وأصبح الآن “ACME Corp” هو “Globex Ltd” في كل عقد، جدول زمني، ميزانية وعرض شرائح يذكره. مع تشغيل خادم GroupDocs.Editor MCP محليًا، يقوم Claude Desktop أو Cursor أو Copilot بتنفيذ ذلك كدفعة: لكل ملف في المجلد يستدعي replace_text، يحتفظ بالتنسيق، يبلغ عن عدد مرات الاستبدال التي قام بها، ولا يكتب شيئًا للملفات التي لم تذكر الاسم القديم أبدًا. لا يتم تحميل أي شيء، ولا يتم الكتابة فوق الأصل:

أعد تسمية ACME Corp إلى Globex Ltd في كل مستند في مجلد العقود، مع الحفاظ على التنسيق، وأعطني عددًا لكل ملف.

الإصدار خطوة بخطوة موجود في الوثائق: How to find and replace text across a folder of documents without breaking the formatting.

لماذا هذه المهمة لأداة وليس للنموذج؟

لأن النتيجة يجب أن تكون قابلة للتحقق. أربعون مستندًا كثير جدًا لتفحصها بالعين، والنموذج الذي “حدّث جميع العقود” لا يمنحك ما يمكنك التحقق منه. أداة البحث والاستبدال تعطيك عددًا لكل ملف. الأعداد هي سجل التدقيق: تعرف أي الملفات تغيرت، بكم، وأيها لم تحتاج إلى تغيير.

كما يجب أن تكون العملية مملةً بالطريقة الصحيحة. يبقى اسم الطرف بالخط العريض عريضًا، وتبقى جدول الرسوم بشبكتها، وتبقى العناوين بأنماطها. النموذج لا يعيد كتابة المستند مطلقًا: المحرك يفتح المستند، يستبدل الكلمات، ويكتب نسخة. هناك نقطة في الخادم 26.10.0: تُكتب تلك النسخة من نموذج تحرير HTML الخاص بالمحرك، ولا يتم نقل footer في Word عبره. العقد الذي يذكر المورد في تذييله يحتاج إلى جولة HTML المرقّمة بدلاً من ذلك؛ the FAQ يوضح ما يحتفظ به مستند Word.

ما يراه الوكيل

مُلتقط من GroupDocs.Editor.Mcp 26.10.0 ضد مجموعة اصطناعية صغيرة: اتفاقية خدمات، اتفاقية عدم إفشاء، رسالة ترحيب، ميزانية من ثلاث أوراق، وعرض مراجعة من ثلاث شرائح.

-> 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'

تقرير الوكيل يكتب نفسه: ستة في الاتفاقية، واحد في اتفاقية عدم الإفشاء، لا شيء في رسالة الترحيب، واحد في ملخص الميزانية، واحد في الشريحة الأولى.

الحلقة

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 التي تزيد عن صفحتين.

الأسئلة المتكررة

هل يمكنه استبدال النص في Word وExcel وPowerPoint في دفعة واحدة؟
نعم. يستدعي الوكيل الأداة نفسها لكل ملف ويضيف worksheet أو slide لجداول البيانات والعروض.

كيف أعرف أي الملفات تم تغييرها؟
كل استدعاء يُعيد العدد، والملفات التي لا تحتوي على تطابق لا تُكتب مطلقًا. اطلب من الوكيل جدولًا لكل ملف.

هل سيتم الكتابة فوق الأصليات؟
لا. كل تعديل يكتب ملفًا جديدًا؛ تبقى الأصليات كما هي حتى تقوم أنت باستبدالها.

تعمق أكثر