史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2010-01-14, 01:38 PM   #1
sagalee
註冊會員
榮譽勳章

勳章總數
UID - 335553
在線等級: 級別:0 | 在線時長:3小時 | 升級還需:2小時
註冊日期: 2010-01-12
文章: 5
精華: 0
現金: 9 金幣
資產: 9 金幣
預設 疑問 - 如何寫一個批次取代修改文件中的文字

小弟有一個問題想問各位高手
我有一個文字檔
想把裡面一個特定的字依序取代掉
例如:
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有取代功能
但是他只能取代成同樣的文字
不能依序更換取代的文字
想請問各位高手
有什麼方法可以解決
感謝!!!
sagalee 目前離線  
送花文章: 2, 收花文章: 0 篇, 收花: 0 次
回覆時引用此帖
舊 2010-01-14, 10:16 PM   #2 (permalink)
註冊會員
 
pedrowong 的頭像
榮譽勳章
UID - 312366
在線等級: 級別:13 | 在線時長:250小時 | 升級還需:2小時級別:13 | 在線時長:250小時 | 升級還需:2小時級別:13 | 在線時長:250小時 | 升級還需:2小時
註冊日期: 2008-10-25
住址: 台北
文章: 94
精華: 0
現金: 207 金幣
資產: 367 金幣
預設

請問:
1.文件檔中的替代文字位置是否固定?
2.文件檔行數是否固定?
3.可否貼一段(幾行)實際字串範例?

一般來說,批次檔需叫出背景編輯軟體才能自動將
文件檔中的文字替代為另一文字。因此除需準備背
景編輯軟體外,另需準備背景編輯軟體的編輯描述
檔。

下載Editor軟體,該軟體提供不少編輯指令,看是否
滿足需求。
http://www.4shared.com/file/13333482...84/Editor.html
pedrowong 目前離線  
送花文章: 4, 收花文章: 84 篇, 收花: 193 次
回覆時引用此帖
舊 2010-01-18, 10:22 AM   #3 (permalink)
註冊會員
榮譽勳章

勳章總數
UID - 335553
在線等級: 級別:0 | 在線時長:3小時 | 升級還需:2小時
註冊日期: 2010-01-12
文章: 5
精華: 0
現金: 9 金幣
資產: 9 金幣
預設

感謝大大的回覆
我在對我要處理的文件做個詳細說明
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
一直重複動作
小弟對寫程式方面比較薄弱
希望各位高手能幫小弟解決這個問題
感激不盡
sagalee 目前離線  
送花文章: 2, 收花文章: 0 篇, 收花: 0 次
回覆時引用此帖
舊 2010-01-18, 10:55 PM   #4 (permalink)
註冊會員
 
pedrowong 的頭像
榮譽勳章
UID - 312366
在線等級: 級別:13 | 在線時長:250小時 | 升級還需:2小時級別:13 | 在線時長:250小時 | 升級還需:2小時級別:13 | 在線時長:250小時 | 升級還需:2小時
註冊日期: 2008-10-25
住址: 台北
文章: 94
精華: 0
現金: 207 金幣
資產: 367 金幣
預設

一、下載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 檔即可把紅色的數字部分取代掉
pedrowong 目前離線  
送花文章: 4, 收花文章: 84 篇, 收花: 193 次
回覆時引用此帖
有 2 位會員向 pedrowong 送花:
cwvdavid (2010-01-20),sagalee (2010-01-20)
感謝您發表一篇好文章
舊 2010-01-19, 02:09 PM   #5 (permalink)
註冊會員
榮譽勳章

勳章總數
UID - 335553
在線等級: 級別:0 | 在線時長:3小時 | 升級還需:2小時
註冊日期: 2010-01-12
文章: 5
精華: 0
現金: 9 金幣
資產: 9 金幣
預設

感謝大大為小弟解惑
但小弟還是弄不出來
不知是哪個環節錯了
大大可以在說明詳細一點嗎
或是貼個完整範例來看看
感激不盡
sagalee 目前離線  
送花文章: 2, 收花文章: 0 篇, 收花: 0 次
回覆時引用此帖
舊 2010-01-19, 10:01 PM   #6 (permalink)
註冊會員
 
pedrowong 的頭像
榮譽勳章
UID - 312366
在線等級: 級別:13 | 在線時長:250小時 | 升級還需:2小時級別:13 | 在線時長:250小時 | 升級還需:2小時級別:13 | 在線時長:250小時 | 升級還需:2小時
註冊日期: 2008-10-25
住址: 台北
文章: 94
精華: 0
現金: 207 金幣
資產: 367 金幣
預設

假定你貼出的案例檔案名稱為 'editorfile.txt'

那麼將edit-script.txt 檔設定如下:
===================================
r 00661 00662
r 00661 00663
===================================

然後執行以下 CMD 檔:
rem ===================================
editor edit-script.txt editorfile.txt
rem ===================================
pedrowong 目前離線  
送花文章: 4, 收花文章: 84 篇, 收花: 193 次
回覆時引用此帖
有 2 位會員向 pedrowong 送花:
cwvdavid (2010-01-20),sagalee (2010-01-20)
感謝您發表一篇好文章
舊 2010-01-20, 08:01 PM   #7 (permalink)
註冊會員
榮譽勳章

勳章總數
UID - 335553
在線等級: 級別:0 | 在線時長:3小時 | 升級還需:2小時
註冊日期: 2010-01-12
文章: 5
精華: 0
現金: 9 金幣
資產: 9 金幣
預設

感謝大大又一次詳細的說明作法
但是我還是用不出來耶...
我試過其他指令的可以用
唯獨"r"這個指令不行
這個指令是取代動作
我也試過"ra"這是全部取代的意思
他可以用
就"r"不行
真是奇怪
想請問大大
用"r"這個指令有成功過嗎?
還是我用的作業系統關係
我是用win7
請大大為小弟在解惑一次吧!
感激不盡
sagalee 目前離線  
送花文章: 2, 收花文章: 0 篇, 收花: 0 次
回覆時引用此帖
舊 2010-01-20, 11:10 PM   #8 (permalink)
註冊會員
 
pedrowong 的頭像
榮譽勳章
UID - 312366
在線等級: 級別:13 | 在線時長:250小時 | 升級還需:2小時級別:13 | 在線時長:250小時 | 升級還需:2小時級別:13 | 在線時長:250小時 | 升級還需:2小時
註冊日期: 2008-10-25
住址: 台北
文章: 94
精華: 0
現金: 207 金幣
資產: 367 金幣
預設

這指令改新版時,改出 bug,已修復。
請重新下載。
pedrowong 目前離線  
送花文章: 4, 收花文章: 84 篇, 收花: 193 次
回覆時引用此帖
舊 2010-01-20, 11:51 PM   #9 (permalink)
註冊會員
榮譽勳章

勳章總數
UID - 335553
在線等級: 級別:0 | 在線時長:3小時 | 升級還需:2小時
註冊日期: 2010-01-12
文章: 5
精華: 0
現金: 9 金幣
資產: 9 金幣
預設

感謝大大的幫忙
終於解決了
真是幫了我一個大忙啊...
sagalee 目前離線  
送花文章: 2, 收花文章: 0 篇, 收花: 0 次
回覆時引用此帖
舊 2010-01-25, 10:40 AM   #10 (permalink)
註冊會員
榮譽勳章

勳章總數
UID - 335908
在線等級: 級別:2 | 在線時長:12小時 | 升級還需:9小時級別:2 | 在線時長:12小時 | 升級還需:9小時
註冊日期: 2010-01-22
文章: 15
精華: 0
現金: 40 金幣
資產: 140 金幣
預設 分享一個更簡單的方法...用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的語法~分享~
ccutmis 目前離線  
送花文章: 0, 收花文章: 12 篇, 收花: 17 次
回覆時引用此帖
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用

相似的主題
主題 主題作者 討論區 回覆 最後發表
求助 - 如何寫一個刪除固定檔案的批次檔? 丹楓 一般電腦疑難討論區 9 2009-03-25 09:24 PM
求助 - 如何寫一個刪除登錄檔機碼的批次檔,在匯入時不要提示使用者是或否? 風流瀟灑 一般電腦疑難討論區 5 2007-09-18 02:49 AM
求助 - 如何寫一個批次檔讓光碟片放入後自動執行光碟片中的執行檔呢 丹楓 一般電腦疑難討論區 3 2007-04-21 03:24 PM
如何寫一個可以同時開啟winamp及kkman的批次檔 ipisking 一般電腦疑難討論區 15 2005-02-23 11:25 PM


所有時間均為台北時間。現在的時間是 04:48 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1