作者hpo14 (陌生)
看板EZsoft
標題Re: [請問]有沒有可以利用"檔名"取代"檔案內"字串ꨠ…
時間Sun Jun 27 01:21:37 2010
隨手亂寫,還請其他高手見諒。
使用方式為要做處理檔案請手動拖曳到底下這個檔案的圖示上即可。
(可圈選大量檔案,並拖曳)
檔案會直接輸出到與來源相同的目錄
注意:若是你丟入的檔案副檔名是
.html 的話,則輸出時會覆蓋原檔!!
ps.
*** 表示請自己把下一行接上去
pps. 請使用者自行負擔使用風險
--------8<------------- (複製虛線內文字另存為 .vbs)
Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objStream : Set objStream = CreateObject("ADODB.Stream")
Dim objArgs : Set objArgs = WScript.Arguments
Dim fpath, ftmp, file, i, sid, sname, scat
If objArgs.Count < 1 Then
WScript.Quit
End if
'// 設定編碼格式與讀取方式
objStream.Charset = "UTF-8"
objStream.Type = 2
For i = 0 to objArgs.Count - 1
fpath = objArgs(i)
ftmp = Mid(fpath, InStrRev(fpath, "\") + 1,
***
InStrRev(fpath, ".") - InStrRev(fpath, "\") - 1)
'// 擷取檔名
sid = Mid(ftmp, 1, InStr(ftmp, "-") - 1)
sname = Mid(ftmp, InStr(ftmp, "-") + 1,
***
InStrRev(ftmp, "-") - InStr(ftmp, "-") - 1)
scat = Mid(ftmp, InStrRev(ftmp, "-") + 1, Len(ftmp) - InStrRev(ftmp, "-"))
'// 開啟 objStream
objStream.Open
objStream.LoadFromFile fpath
'// 讀入檔案內容
ftmp = objStream.ReadText
'// 關閉 objStream
objStream.Close
'// 替換字串
ftmp = Replace(ftmp, "$ID", sid, 1, -1, 1)
ftmp = Replace(ftmp, "$Name", sname , 1, -1, 1)
ftmp = Replace(ftmp, "%Name", sname, 1, -1, 1)
ftmp = Replace(ftmp, "$CAT", scat, 1, -1, 1)
'// 設定存檔路徑與檔名
fpath = Mid(fpath, 1, InStrRev(fpath, ".") - 1) & ".html"
objStream.Open
objStream.WriteText ftmp
'// 輸出檔案
objStream.SaveToFile fpath, 2
objStream.Close
Next
--------8<------------- (複製虛線內文字另存為 .vbs)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.204.46.87
推 rwhung:感謝,成功跑出來. 不過因為原檔案為UTF-8,結果變成亂碼 06/27 02:19
→ rwhung:請教如何修正 06/27 02:19
推 rwhung:結果反而全部都變亂碼了,格式全跑掉 06/27 04:09
→ rwhung:註:原檔案中有中文,$Name也有中文(字串) 06/27 04:12
推 rwhung:找到原因了,因為轉出來的檔案為『UTF16-LE』所以要先把原 06/27 13:00
推 rwhung:檔轉成『 UTF16-LE』,再丟過就可以,謝謝hpo大幫忙 06/27 13:02
已經另外修正好了,請重新複製一次虛線內檔案,存檔使用即可。
此次,會直接以 UTF-8 來讀寫檔案本身,所以不用在另外轉檔。
※ 編輯: hpo14 來自: 123.204.46.87 (06/27 14:58)
推 rwhung:太感動!你還重寫一遍. 成功達成需求,感恩. 06/27 15:13
推 yangmilk:推 06/27 16:54
推 mvp04:認真推 06/27 18:38