![]() |
如何寫一個批次取代修改文件中的文字
小弟有一個問題想問各位高手
我有一個文字檔 想把裡面一個特定的字依序取代掉 例如: caseD-1-00001-->caseD-1-00002 caseD-1-00001-->caseD-1-00003 caseD-1-00001-->caseD-1-00004 caseD-1-00001-->caseD-1-00005 紅色的字取代成藍色的字 我知道word有取代功能 但是他只能取代成同樣的文字 不能依序更換取代的文字 想請問各位高手 有什麼方法可以解決 感謝!!! |
請問:
1.文件檔中的替代文字位置是否固定? 2.文件檔行數是否固定? 3.可否貼一段(幾行)實際字串範例? 一般來說,批次檔需叫出背景編輯軟體才能自動將 文件檔中的文字替代為另一文字。因此除需準備背 景編輯軟體外,另需準備背景編輯軟體的編輯描述 檔。 下載Editor軟體,該軟體提供不少編輯指令,看是否 滿足需求。 http://www.4shared.com/file/13333482...84/Editor.html |
感謝大大的回覆
我在對我要處理的文件做個詳細說明 1.文件檔中的替代文字位置是否固定? Ans:固定的 2.文件檔行數是否固定? Ans:固定的 我要處理的文件是一個程式的指令,因為有很多case重複同樣動作 所以只須修改指令中的case名稱,就可以連續執行,省下不少時間 下面是我貼出2大段的指令 (cx-gui-do cx-activate-item "MenuBar*ReadSubMenu*Case & Data...") (cx-gui-do cx-set-text-entry "Select File*FilterText" "e:\fluent-case & data\paper\vibrating-plate-vertical-channel\2d-case\cased\cased-1\dm\*") (cx-gui-do cx-activate-item "Select File*Apply") (cx-gui-do cx-set-text-entry "Select File*Text" "caseD-1-DM-1-00661.cas") (cx-gui-do cx-activate-item "Select File*OK") (cx-gui-do cx-activate-item "NavigationPane*Frame1*PushButton19(Graphics and Animations)") (cx-gui-do cx-activate-item "Graphics and Animations*Frame1*Table1*Frame7*ButtonBox7*PushButton1(Options)") (cx-gui-do cx-set-toggle-button "Display Options*Frame4(Layout)*CheckButton1(Titles)" #t) (cx-gui-do cx-activate-item "Display Options*Frame4(Layout)*CheckButton1(Titles)") (cx-gui-do cx-set-list-selections "Display Options*Frame4(Layout)*DropDownList5(Colormap Alignment)" '( 3)) (cx-gui-do cx-activate-item "Display Options*Frame4(Layout)*DropDownList5(Colormap Alignment)") (cx-gui-do cx-activate-item "Display Options*PanelButtons*PushButton1(Apply)") (cx-gui-do cx-activate-item "Display Options*PanelButtons*PushButton2(Close)") (cx-gui-do cx-activate-item "MenuBar*DisplayMenu*Views...") (cx-gui-do cx-activate-item "Views*Frame2(Actions)*ButtonBox2(Actions)*PushButton6(Read)") (cx-gui-do cx-set-text-entry "Select File*FilterText" "e:\fluent-case & data\paper\vibrating-plate-vertical-channel\2d-case\cased\*") (cx-gui-do cx-activate-item "Select File*Apply") (cx-gui-do cx-activate-item "MenuBar*ReadSubMenu*Case & Data...") (cx-gui-do cx-set-text-entry "Select File*FilterText" "e:\fluent-case & data\paper\vibrating-plate-vertical-channel\2d-case\cased\cased-1\dm\*") (cx-gui-do cx-activate-item "Select File*Apply") (cx-gui-do cx-set-text-entry "Select File*Text" "caseD-1-DM-1-00661.cas") (cx-gui-do cx-activate-item "Select File*OK") (cx-gui-do cx-activate-item "NavigationPane*Frame1*PushButton19(Graphics and Animations)") (cx-gui-do cx-activate-item "Graphics and Animations*Frame1*Table1*Frame7*ButtonBox7*PushButton1(Options)") (cx-gui-do cx-set-toggle-button "Display Options*Frame4(Layout)*CheckButton1(Titles)" #t) (cx-gui-do cx-activate-item "Display Options*Frame4(Layout)*CheckButton1(Titles)") (cx-gui-do cx-set-list-selections "Display Options*Frame4(Layout)*DropDownList5(Colormap Alignment)" '( 3)) (cx-gui-do cx-activate-item "Display Options*Frame4(Layout)*DropDownList5(Colormap Alignment)") (cx-gui-do cx-activate-item "Display Options*PanelButtons*PushButton1(Apply)") (cx-gui-do cx-activate-item "Display Options*PanelButtons*PushButton2(Close)") (cx-gui-do cx-activate-item "MenuBar*DisplayMenu*Views...") (cx-gui-do cx-activate-item "Views*Frame2(Actions)*ButtonBox2(Actions)*PushButton6(Read)") (cx-gui-do cx-set-text-entry "Select File*FilterText" "e:\fluent-case & data\paper\vibrating-plate-vertical-channel\2d-case\cased\*") (cx-gui-do cx-activate-item "Select File*Apply") 我希望能把紅色的數字部分取代掉 第一個00661-->00662 下一個00661-->00663 一直重複動作 小弟對寫程式方面比較薄弱 希望各位高手能幫小弟解決這個問題 感激不盡 |
一、下載Editor軟體
二、製作 cmd 檔如下: rem =================================== rem 將 editorfile.txt 改為 實際需檔名 rem =================================== editor edit-script.txt editorfile.txt rem =================================== 三、製作edit-script.txt 檔如下: =================================== r 00661 00662 r 00661 00663 r 00661 00664 r 00661 00665 r 00661 00666 ' ' 將編輯長度加長到夠長,足以處理所有資料 ' r 00661 00xxx r 00661 00yyy r 00661 00zzz =================================== 四、執行 cmd 檔即可把紅色的數字部分取代掉 |
感謝大大為小弟解惑
但小弟還是弄不出來 不知是哪個環節錯了 大大可以在說明詳細一點嗎 或是貼個完整範例來看看 感激不盡 |
假定你貼出的案例檔案名稱為 'editorfile.txt'
那麼將edit-script.txt 檔設定如下: =================================== r 00661 00662 r 00661 00663 =================================== 然後執行以下 CMD 檔: rem =================================== editor edit-script.txt editorfile.txt rem =================================== |
感謝大大又一次詳細的說明作法
但是我還是用不出來耶...:on_51: 我試過其他指令的可以用 唯獨"r"這個指令不行 這個指令是取代動作 我也試過"ra"這是全部取代的意思 他可以用 就"r"不行 真是奇怪 想請問大大 用"r"這個指令有成功過嗎? 還是我用的作業系統關係 我是用win7 請大大為小弟在解惑一次吧! 感激不盡 |
這指令改新版時,改出 bug,已修復。
請重新下載。 |
:on_79:感謝大大的幫忙
終於解決了 真是幫了我一個大忙啊... |
分享一個更簡單的方法...用WSH...
[步驟1]在C:\ 建立一個文字檔"data.txt",裡面的內容是...
caseD-1-00001 caseD-1-00001 caseD-1-00001 caseD-1-00001 =============== [步驟2]在C:\ 建立一個文字檔並命名為 "fixNum.vbs",裡面的內容是... Set objRegEx = CreateObject("VBScript.RegExp") Dim arrFileLines() AAA = "" i = 0 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("C:\data.txt", 1) Do Until objFile.AtEndOfStream Redim Preserve arrFileLines(i) arrFileLines(i) = objFile.ReadLine i = i + 1 Loop objFile.Close 'readfile finished! Set objRegEx = CreateObject("VBScript.RegExp") objRegEx.Global = True objRegEx.IgnoreCase = True objRegEx.Pattern = "\d{5}" For l = LBound(arrFileLines) to UBound(arrFileLines) Step 1 strNewString = objRegEx.Replace(arrFileLines(l),"0000" & (l+1) ) AAA = AAA & strNewString & chr(10) Next Wscript.Echo AAA ================== [步驟3]在DOS模式底下執行[步驟2]的fixNum.vbs即可~ 例如: C:\fixNum.vbs [enter] 執行結果: caseD-1-00001 caseD-1-00002 caseD-1-00003 caseD-1-00004 ================ 執行結果是用Echo出來的,也可以將它寫回文字檔...用VBSCRIPT的語法~分享~ |
所有時間均為台北時間。現在的時間是 02:27 PM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *