[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
“添加UFT-8文件头并转换成ANSI编码”,无需添加BOM照样转换
  1. set fso = CreateObject("Scripting.FileSystemObject")
  2. 'Files属性获取文件集合时,与CMD下的for遍历文件有相同的Bug:
  3. '如果文件名有变动,可能会重复或多次遍历
  4. '看来是某个API的Bug
  5. '所以先获取文件列表再使用保险一点
  6. FileList = ""
  7. for each oFile in fso.GetFolder(".").Files
  8.     if LCase(fso.GetExtensionName(oFile.Path)) = LCase("txt") then
  9.         FileList = FileList & oFile.Path & vbCrLf
  10.     end if
  11. next
  12. Files = Split(FileList, vbCrLf)
  13. for i=0 to UBound(Files)-1 '最后一个元素是空的
  14.     'U8ToU8Bom Files(i) '如果要生成一个有BOM的文件,启用此行
  15.     U8ToAnsi Files(i)
  16. next
  17. function U8ToU8Bom(strFile)
  18.     dim ADOStrm
  19.     Set ADOStrm = CreateObject("ADODB.Stream")
  20.     ADOStrm.Type = 2
  21.     ADOStrm.Mode = 3
  22.     ADOStrm.CharSet = "utf-8"
  23.     ADOStrm.Open
  24.     ADOStrm.LoadFromFile strFile
  25.     ADOStrm.SaveToFile strFile & ".u8.txt", 2
  26.     ADOStrm.Close
  27.     Set ADOStrm = Nothing
  28. end function
  29. function U8ToAnsi(strFile)
  30.     dim ADOStrm
  31.     dim s
  32.     Set ADOStrm = CreateObject("ADODB.Stream")
  33.     ADOStrm.Type = 2
  34.     ADOStrm.Mode = 3
  35.     ADOStrm.CharSet = "utf-8"
  36.     ADOStrm.Open
  37.     ADOStrm.LoadFromFile strFile
  38.     s = ADOStrm.ReadText
  39.     ADOStrm.Position = 0
  40.     ADOStrm.CharSet = "gbk"
  41.     ADOStrm.WriteText s
  42.     ADOStrm.SetEOS
  43.     ADOStrm.SaveToFile strFile & ".ansi.txt", 2
  44.     ADOStrm.Close
  45.     Set ADOStrm = Nothing
  46. end function
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 6楼 的帖子

& ".ansi.txt"去掉即可。

提示:不管代码可靠性有多高,如果涉及到直接修改原文件,运行代码前先进行备份是中华民族优良传统^_^
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

返回列表