ต้องการค้นหาและแทนที่ เอกสาร OpenOffice-Writer ที่บันทึกไว้เป็นนามสกุล .doc
(เพื่อให้ใช้งานข้ามระบบได้ เลยบันทึกเป็น .doc
ตระกูล Microsoft-Word)
โดยต้องการทำงานเป็นแบตช์ คือค้นหาและแทนที่คำว่า OLD
ด้วยคำว่า NEW
กับทุก ๆ ไฟล์
แก้ปัญหาโดยต้องเข้าไปสร้างคำสั่งมาโครภาษาเบสิกไว้ก่อน แล้วจึงสั่งงานด้วยบรรทัดคำสั่งในเชลล์อีกทีนึง
เริ่มด้วย ไปที่เมนู
Tools -> Macros -> Organize Macros -> OpenOffice.org Basic
-> My Macros -> Standard
เลือก New
ตั้งชื่อรูทีนว่า BatchFixMissSpell
... Sub BatchFixMissSpell(cFile) rem Load file cURL = ConvertToURL( cFile ) rem Set document oDoc = StarDesktop.loadComponentFromURL( cURL, "_blank", SELF, Array() ) rem Create Search Descriptor FandR = oDoc.createSearchDescriptor() rem Set search/replace string FandR.setSearchString("OLD") : FandR.setReplaceString("NEW") rem Do replace oDoc.ReplaceAll(FandR) rem Save file oDoc.storeToURL( cURL, Array() ) rem Write & exit oDoc.dispose() End Sub ...
บันทึกแล้วออกจากทั้งโปรแกรมมาโคร และ OpenOffice-Writer เลย
สมมุติถ้าจะค้นและแทนที่กับทุกไฟล์ที่เป็นนามสกุล .doc
ใช้คำสั่งในเชลล์ว่า
$ for i in *.doc; do soffice -invisible "macro:///Standard.Module1.BatchFixMissSpell(`pwd`/$i)"; done
เวลาใช้งานจริงอาจเก็บเป็นคำศัพท์ที่ผิดบ่อยแล้วเขียนลงไว้หลาย ๆ ศัพท์ น่าจะดี
อ้างอิง
เพิ่มเติม
$ for i in *.doc; do \ echo $i;\ cp "$i" xxx.doc;\ soffice "macro:///Standard.Module1.BatchFixMissSpell(`pwd`/xxx.doc)";\ mv xxx.doc "$i";\ done
-invisible
ช่วยได้เล็กน้อย)