您好,登錄后才能下訂單哦!
這篇文章主要介紹“vbs腳本怎么實現批量轉換文件編碼”,在日常操作中,相信很多人在vbs腳本怎么實現批量轉換文件編碼問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”vbs腳本怎么實現批量轉換文件編碼”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
復制代碼 代碼如下:
'-------------------------------------------------
'函數名稱:ReadFile
'作用:利用AdoDb.Stream對象來讀取各種格式的文本文件
'-------------------------------------------------
Function ReadFile(FileUrl, CharSet) Dim Str Set stm = CreateObject("Adodb.Stream") stm.Type = 2 stm.mode = 3 stm.charset = CharSet stm.Open stm.loadfromfile FileUrl Str = stm.readtext stm.Close Set stm = Nothing ReadFile = Str End Function
我們使用ReadFile函數讀取文件,其中FileUrl指定文件的路徑,CharSet指定文件的原始編碼格式,使用adodb.stream對象讀取文件內容到Str。
復制代碼 代碼如下:
'-------------------------------------------------
'函數名稱:WriteToFile
'作用:利用AdoDb.Stream對象來寫入各種格式的文本文件
'-------------------------------------------------
Function WriteToFile (FileUrl, Str, CharSet) Set stm = CreateObject("Adodb.Stream") stm.Type = 2 stm.mode = 3 stm.charset = CharSet stm.Open stm.WriteText Str stm.SaveToFile FileUrl, 2 stm.flush stm.Close Set stm = Nothing End Function
然后使用WriteToFile將Str寫回原文件FileUrl,并設定新的編碼CharSet。
復制代碼 代碼如下:
'-------------------------------------------------
'函數名稱:ConvertFile
'作用:將一個文件進行編碼轉換
'-------------------------------------------------
Function ConvertFile(FileUrl) Call WriteToFile(FileUrl, ReadFile(FileUrl, SrcCode), DestCode) End Function
這樣ConvertFile對上述兩個函數封裝,實現文件FileUrl的編碼轉換,其中原始編碼SrcCode與目的編碼DestCode為全局變量。
如果僅對一個文件進行編碼轉換,我們不必這么大費周章。我們希望能對任意的文件或文件夾內的所有文件進行編碼轉換,達到批量轉換的目的。
復制代碼 代碼如下:
'-------------------------------------------------
'函數名稱:ConvertDir
'作用:將任意目錄內的文件進行編碼轉換
'-------------------------------------------------
Function ConvertDir(DirUrl) If fs.FileExists(DirUrl) Then Call ConvertFile(DirUrl) Else Call SearchDir(DirUrl) End If End Function
函數ConvertDir對任意路徑的文件/文件夾進行編碼轉換,使用scripting.filesystemobject對象的FileExists函數判斷路徑對應的是文件還是文件夾,如果是文件則直接調用ConvertFile進行編碼轉換,否則調用SearchDir處理文件夾。
復制代碼 代碼如下:
'-------------------------------------------------
'函數名稱:SearchDir
'作用:遞歸查找目錄內的文件,進行編碼轉換
'-------------------------------------------------
Function SearchDir(path) Set folder = fs.getfolder(path) Set subfolders = folder.subfolders Set Files = folder.Files For Each i In Files Call ConvertFile(i.path) Next For Each j In subfolders Call SearchDir(j.path) Next End Function
函數SearchDir是遞歸的,首先調用getfolder創建文件夾對象,然后取出文件夾內的子文件夾集合subfolders和子文件集合files。對于每個子文件,直接調用ConvertFile進行編碼轉換即可,而對于每個子文件夾,則遞歸調用SearchDir重復處理。
復制代碼 代碼如下:
'-------------------------------------------------
'設置編碼:默認 utf-8 --> gb2312
'-------------------------------------------------
SrcCode="utf-8" DestCode="gb2312"
'-------------------------------------------------
'解析參數
'-------------------------------------------------
Set fs = CreateObject("scripting.filesystemobject") Set objArgs = WScript.Arguments If objArgs.Count>0 Then For I = 0 To objArgs.Count - 1 FileUrl = objArgs(I) Call ConvertDir(FileUrl) Next Else MsgBox "沒有文件/文件夾被拖入!" wscript.quit End If
MsgBox "轉換成功!"
最后通過解析腳本文件的參數,由于每個參數對應一個文件/文件夾的路徑,將之傳遞給ConvertDir即可。這里默認的是將UTF-8編碼轉化為GB2312編碼,讀者可以根據自身需要自行修改。
將上述代碼保存為ConvertCode.vbs,只需要將任意多個文件選中拖動到該腳本文件上即可。或者使用命令行。
復制代碼 代碼如下:
> ConvertCode.vbs [filepath]
需要注意的是文件編碼是就地轉換的,在轉換之前最好將原文件/文件夾進行備份。
最后附上腳本文件的所有代碼。
復制代碼 代碼如下:
'/*===========================================================' * Intro 把要轉換的多個文件/文件夾拖到該文件上即可' * FileName ConvertCode.vbs' * Author Florian' * Version v1.0' * LastModify 2014-06-11 00:39:58' *==========================================================*/ '-------------------------------------------------'設置編碼:默認 utf-8 --> gb2312'------------------------------------------------- SrcCode="utf-8"DestCode="gb2312" '-------------------------------------------------'解析參數'------------------------------------------------- Set fs = CreateObject("scripting.filesystemobject")Set objArgs = WScript.ArgumentsIf objArgs.Count>0 Then For I = 0 To objArgs.Count - 1 FileUrl = objArgs(I) Call ConvertDir(FileUrl) NextElse MsgBox "沒有文件/文件夾被拖入!" wscript.quitEnd IfMsgBox "轉換成功!" '-------------------------------------------------'函數名稱:ConvertDir'作用:將任意目錄內的文件進行編碼轉換'------------------------------------------------- Function ConvertDir(DirUrl) If fs.FileExists(DirUrl) Then Call ConvertFile(DirUrl) Else Call SearchDir(DirUrl) End IfEnd Function '-------------------------------------------------'函數名稱:SearchDir'作用:遞歸查找目錄內的文件,進行編碼轉換'------------------------------------------------- Function SearchDir(path) Set folder = fs.getfolder(path) Set subfolders = folder.subfolders Set Files = folder.Files For Each i In Files Call ConvertFile(i.path) Next For Each j In subfolders Call SearchDir(j.path) NextEnd Function '-------------------------------------------------'函數名稱:ConvertFile'作用:將一個文件進行編碼轉換'------------------------------------------------- Function ConvertFile(FileUrl) Call WriteToFile(FileUrl, ReadFile(FileUrl, SrcCode), DestCode)End Function '-------------------------------------------------'函數名稱:ReadFile'作用:利用AdoDb.Stream對象來讀取各種格式的文本文件'------------------------------------------------- Function ReadFile(FileUrl, CharSet) Dim Str Set stm = CreateObject("Adodb.Stream") stm.Type = 2 stm.mode = 3 stm.charset = CharSet stm.Open stm.loadfromfile FileUrl Str = stm.readtext stm.Close Set stm = Nothing ReadFile = StrEnd Function '-------------------------------------------------'函數名稱:WriteToFile'作用:利用AdoDb.Stream對象來寫入各種格式的文本文件'------------------------------------------------- Function WriteToFile (FileUrl, Str, CharSet) Set stm = CreateObject("Adodb.Stream") stm.Type = 2 stm.mode = 3 stm.charset = CharSet stm.Open stm.WriteText Str stm.SaveToFile FileUrl, 2 stm.flush stm.Close Set stm = NothingEnd FunctionView Code
到此,關于“vbs腳本怎么實現批量轉換文件編碼”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。