set fso = CreateObject("Scripting.FileSystemObject")
'Files属性获取文件集合时,与CMD下的for遍历文件有相同的Bug:
'如果文件名有变动,可能会重复或多次遍历
'看来是某个API的Bug
'所以先获取文件列表再使用保险一点
FileList = ""
for each oFile in fso.GetFolder(".").Files
if LCase(fso.GetExtensionName(oFile.Path)) = LCase("txt") then
FileList = FileList & oFile.Path & vbCrLf
end if
next
Files = Split(FileList, vbCrLf)
for i=0 to UBound(Files)-1 '最后一个元素是空的
'U8ToU8Bom Files(i) '如果要生成一个有BOM的文件,启用此行
U8ToAnsi Files(i)
next
function U8ToU8Bom(strFile)
dim ADOStrm
Set ADOStrm = CreateObject("ADODB.Stream")
ADOStrm.Type = 2
ADOStrm.Mode = 3
ADOStrm.CharSet = "utf-8"
ADOStrm.Open
ADOStrm.LoadFromFile strFile
ADOStrm.SaveToFile strFile & ".u8.txt", 2
ADOStrm.Close
Set ADOStrm = Nothing
end function
function U8ToAnsi(strFile)
dim ADOStrm
dim s
Set ADOStrm = CreateObject("ADODB.Stream")
ADOStrm.Type = 2
ADOStrm.Mode = 3
ADOStrm.CharSet = "utf-8"
ADOStrm.Open
ADOStrm.LoadFromFile strFile
s = ADOStrm.ReadText
ADOStrm.Position = 0
ADOStrm.CharSet = "gbk"
ADOStrm.WriteText s
ADOStrm.SetEOS
ADOStrm.SaveToFile strFile & ".ansi.txt", 2
ADOStrm.Close
Set ADOStrm = Nothing
end function
原文地址:http://www.bathome.net/thread-8299-1-1.html
本文介绍了一段批处理脚本,用于将指定目录下的所有文本文件从UTF-8编码转换为GBK编码,并同时生成了两种格式的文件。通过使用VBScript和ADODB.Stream对象,实现了高效且灵活的文件编码转换功能。
9736

被折叠的 条评论
为什么被折叠?



