您好,登錄后才能下訂單哦!
這篇文章主要介紹“vbs腳本怎么實(shí)現(xiàn)批量轉(zhuǎn)換文件編碼”,在日常操作中,相信很多人在vbs腳本怎么實(shí)現(xiàn)批量轉(zhuǎn)換文件編碼問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”vbs腳本怎么實(shí)現(xiàn)批量轉(zhuǎn)換文件編碼”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
復(fù)制代碼 代碼如下:
'-------------------------------------------------
'函數(shù)名稱:ReadFile
'作用:利用AdoDb.Stream對(duì)象來(lái)讀取各種格式的文本文件
'-------------------------------------------------
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函數(shù)讀取文件,其中FileUrl指定文件的路徑,CharSet指定文件的原始編碼格式,使用adodb.stream對(duì)象讀取文件內(nèi)容到Str。
復(fù)制代碼 代碼如下:
'-------------------------------------------------
'函數(shù)名稱:WriteToFile
'作用:利用AdoDb.Stream對(duì)象來(lái)寫(xiě)入各種格式的文本文件
'-------------------------------------------------
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寫(xiě)回原文件FileUrl,并設(shè)定新的編碼CharSet。
復(fù)制代碼 代碼如下:
'-------------------------------------------------
'函數(shù)名稱:ConvertFile
'作用:將一個(gè)文件進(jìn)行編碼轉(zhuǎn)換
'-------------------------------------------------
Function ConvertFile(FileUrl) Call WriteToFile(FileUrl, ReadFile(FileUrl, SrcCode), DestCode) End Function
這樣ConvertFile對(duì)上述兩個(gè)函數(shù)封裝,實(shí)現(xiàn)文件FileUrl的編碼轉(zhuǎn)換,其中原始編碼SrcCode與目的編碼DestCode為全局變量。
如果僅對(duì)一個(gè)文件進(jìn)行編碼轉(zhuǎn)換,我們不必這么大費(fèi)周章。我們希望能對(duì)任意的文件或文件夾內(nèi)的所有文件進(jìn)行編碼轉(zhuǎn)換,達(dá)到批量轉(zhuǎn)換的目的。
復(fù)制代碼 代碼如下:
'-------------------------------------------------
'函數(shù)名稱:ConvertDir
'作用:將任意目錄內(nèi)的文件進(jìn)行編碼轉(zhuǎn)換
'-------------------------------------------------
Function ConvertDir(DirUrl) If fs.FileExists(DirUrl) Then Call ConvertFile(DirUrl) Else Call SearchDir(DirUrl) End If End Function
函數(shù)ConvertDir對(duì)任意路徑的文件/文件夾進(jìn)行編碼轉(zhuǎn)換,使用scripting.filesystemobject對(duì)象的FileExists函數(shù)判斷路徑對(duì)應(yīng)的是文件還是文件夾,如果是文件則直接調(diào)用ConvertFile進(jìn)行編碼轉(zhuǎn)換,否則調(diào)用SearchDir處理文件夾。
復(fù)制代碼 代碼如下:
'-------------------------------------------------
'函數(shù)名稱:SearchDir
'作用:遞歸查找目錄內(nèi)的文件,進(jìn)行編碼轉(zhuǎn)換
'-------------------------------------------------
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
函數(shù)SearchDir是遞歸的,首先調(diào)用getfolder創(chuàng)建文件夾對(duì)象,然后取出文件夾內(nèi)的子文件夾集合subfolders和子文件集合files。對(duì)于每個(gè)子文件,直接調(diào)用ConvertFile進(jìn)行編碼轉(zhuǎn)換即可,而對(duì)于每個(gè)子文件夾,則遞歸調(diào)用SearchDir重復(fù)處理。
復(fù)制代碼 代碼如下:
'-------------------------------------------------
'設(shè)置編碼:默認(rèn) utf-8 --> gb2312
'-------------------------------------------------
SrcCode="utf-8" DestCode="gb2312"
'-------------------------------------------------
'解析參數(shù)
'-------------------------------------------------
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 "沒(méi)有文件/文件夾被拖入!" wscript.quit End If
MsgBox "轉(zhuǎn)換成功!"
最后通過(guò)解析腳本文件的參數(shù),由于每個(gè)參數(shù)對(duì)應(yīng)一個(gè)文件/文件夾的路徑,將之傳遞給ConvertDir即可。這里默認(rèn)的是將UTF-8編碼轉(zhuǎn)化為GB2312編碼,讀者可以根據(jù)自身需要自行修改。
將上述代碼保存為ConvertCode.vbs,只需要將任意多個(gè)文件選中拖動(dòng)到該腳本文件上即可?;蛘呤褂妹钚小?br/>
復(fù)制代碼 代碼如下:
> ConvertCode.vbs [filepath]
需要注意的是文件編碼是就地轉(zhuǎn)換的,在轉(zhuǎn)換之前最好將原文件/文件夾進(jìn)行備份。
最后附上腳本文件的所有代碼。
復(fù)制代碼 代碼如下:
'/*===========================================================' * Intro 把要轉(zhuǎn)換的多個(gè)文件/文件夾拖到該文件上即可' * FileName ConvertCode.vbs' * Author Florian' * Version v1.0' * LastModify 2014-06-11 00:39:58' *==========================================================*/ '-------------------------------------------------'設(shè)置編碼:默認(rèn) utf-8 --> gb2312'------------------------------------------------- SrcCode="utf-8"DestCode="gb2312" '-------------------------------------------------'解析參數(shù)'------------------------------------------------- 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 "沒(méi)有文件/文件夾被拖入!" wscript.quitEnd IfMsgBox "轉(zhuǎn)換成功!" '-------------------------------------------------'函數(shù)名稱:ConvertDir'作用:將任意目錄內(nèi)的文件進(jìn)行編碼轉(zhuǎn)換'------------------------------------------------- Function ConvertDir(DirUrl) If fs.FileExists(DirUrl) Then Call ConvertFile(DirUrl) Else Call SearchDir(DirUrl) End IfEnd Function '-------------------------------------------------'函數(shù)名稱:SearchDir'作用:遞歸查找目錄內(nèi)的文件,進(jìn)行編碼轉(zhuǎn)換'------------------------------------------------- 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 '-------------------------------------------------'函數(shù)名稱:ConvertFile'作用:將一個(gè)文件進(jìn)行編碼轉(zhuǎn)換'------------------------------------------------- Function ConvertFile(FileUrl) Call WriteToFile(FileUrl, ReadFile(FileUrl, SrcCode), DestCode)End Function '-------------------------------------------------'函數(shù)名稱:ReadFile'作用:利用AdoDb.Stream對(duì)象來(lái)讀取各種格式的文本文件'------------------------------------------------- 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 '-------------------------------------------------'函數(shù)名稱:WriteToFile'作用:利用AdoDb.Stream對(duì)象來(lái)寫(xiě)入各種格式的文本文件'------------------------------------------------- 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
到此,關(guān)于“vbs腳本怎么實(shí)現(xiàn)批量轉(zhuǎn)換文件編碼”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。