[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

VBS怎样把所有编码的文件都转换ANSI编码?

请教一下,如何才能合并这两个VBS文件?



这是专门从Unicode转换到GB2312的VBS



' *============================================================================*
' * 批量编码转换包括GB2312,UTF-8,Unicode,支持拖动,可扩展到右菜单(发送到) *
' * CodeChange.vbs      BY: yongfa365 http://www.yongfa365.com        2007-10-04 *
' * Unicode2ANSI.vbs    BY: fastslz   http://bbs.cn-dos.net           2007-12-03 *
' *============================================================================*
aCode = "Unicode"
bCode = "GB2312"
Set objArgs = WScript.Arguments
If objArgs.Count=0 Then
     MsgBox "本脚本仅支持"&aCode&"到"&bCode&"的转换,请将您要转换的文件拖到这个文件上!     "&vbCrLf&"命令行用法:Unicode2ANSI.vbs [驱动器][目录][文件名1][文件名2]...", vbInformation, "拖拽批量编码转换工具 BY: fastslz"
End If
     For I = 0 To objArgs.Count - 1
         FileUrl = objArgs(I)
         Call CheckCode (FileUrl)
         Call WriteToFile(FileUrl, ReadFile(FileUrl, aCode), bCode)
     Next
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

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

Function CheckCode (FileUrl)
     Dim slz
     set slz = CreateObject("Adodb.Stream")
     slz.Type = 1
     slz.Mode = 3
     slz.Open
     slz.Position = 0
     slz.Loadfromfile FileUrl
     Bin=slz.read(2)
     if AscB(MidB(Bin,1,1))=&HEF and AscB(MidB(Bin,2,1))=&HBB Then
        Codes="UTF-8"
        elseif AscB(MidB(Bin,1,1))=&HFF and AscB(MidB(Bin,2,1))=&HFE Then
               Codes="Unicode"
               else
               Codes="GB2312"
     end if
     if not aCode = Codes Then
            MsgBox "待处理文件 “"&FileUrl&"”"&vbCrLf&"该文件原始编码不是"&aCode&",本脚本仅支持"&aCode&"到"&bCode&"的转换!     ",vbInformation,"错误终止"
            WScript.Quit
     end if
     slz.Close
     set slz = Nothing
End Function

这是专门从UTF-8转换到GB2312的VBS

' *============================================================================*
' * 批量编码转换包括GB2312,UTF-8,Unicode,支持拖动,可扩展到右菜单(发送到) *
' * CodeChange.vbs      BY: yongfa365 http://www.yongfa365.com        2007-10-04 *
' * UTF82ANSI.vbs    BY: fastslz   http://bbs.cn-dos.net           2007-12-03 *
' *============================================================================*
aCode = "UTF-8"
bCode = "GB2312"
Set objArgs = WScript.Arguments
If objArgs.Count=0 Then
     MsgBox "本脚本仅支持"&aCode&"到"&bCode&"的转换,请将您要转换的文件拖到这个文件上!     "&vbCrLf&"命令行用法:UTF82ANSI.vbs [驱动器][目录][文件名1][文件名2]...", vbInformation, "拖拽批量编码转换工具 BY: fastslz"
End If
     For I = 0 To objArgs.Count - 1
         FileUrl = objArgs(I)
         Call CheckCode (FileUrl)
         Call WriteToFile(FileUrl, ReadFile(FileUrl, aCode), bCode)
     Next
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

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

Function CheckCode (FileUrl)
     Dim slz
     set slz = CreateObject("Adodb.Stream")
     slz.Type = 1
     slz.Mode = 3
     slz.Open
     slz.Position = 0
     slz.Loadfromfile FileUrl
     Bin=slz.read(2)
     if AscB(MidB(Bin,1,1))=&HEF and AscB(MidB(Bin,2,1))=&HBB Then
        Codes="UTF-8"
        elseif AscB(MidB(Bin,1,1))=&HFF and AscB(MidB(Bin,2,1))=&HFE Then
               Codes="Unicode"
               else
               Codes="GB2312"
     end if
     if not aCode = Codes Then
            MsgBox "待处理文件 “"&FileUrl&"”"&vbCrLf&"该文件原始编码不是"&aCode&",本脚本仅支持"&aCode&"到"&bCode&"的转换!     ",vbInformation,"错误终止"
            WScript.Quit
     end if
     slz.Close
     set slz = Nothing
End Function

TOP

我想要合并这两个VBS文件,就成为,不管什么编码的TXT文件,都统统转换为ANSI编码的TXT文件,还有,统统去掉弹出消息框的语句,都在静默运行。

我本人对于VBS,毫无基础。大家可以帮忙一下吗?

TOP

返回列表