将vbscript输出保存为ansi错误

时间:2017-12-04 11:50:15

标签: vbscript

我试图将此vbscript中的输出文本文件保存为ANSI而不是Unicode。

这是简化的脚本:

Option Explicit

dim fso, obs, fol, spl, files, objFile, arr, file, ext, ex
Set fso = CreateObject("scripting.filesystemobject")
Set obs = CreateObject("shell.application")
Set fol = fso.GetFolder(".")
Set spl = obs.NameSpace(fol.Path)
Set files = fol.Files
set objFile = fso.openTextFile("test.txt" ,2 , true, false)
arr = Array("mp4")

For Each file In files
    ext = fso.GetExtensionName(file.Name)
    For Each ex In arr
        If StrComp(ext,ex,1)=0 Then
            objFile.writeline fol.Path & "\" & spl.GetDetailsOf(spl.ParseName(file.Name),0) & vbcrlf & spl.GetDetailsOf(spl.ParseName(file.Name),27) & vbcrlf & spl.GetDetailsOf(spl.ParseName(file.Name),28)
        End If         
    Next
Next
objFile.Close

如果我改变:

set objFile = fso.openTextFile("test.txt" ,2 , true, false)

要:

set objFile = fso.openTextFile("test.txt" ,2 , true, true)

脚本有效,但将输出保存为Unicode。如果我保持false,脚本会给我无效的过程调用或参数。 这是导致错误的部分:

spl.GetDetailsOf(spl.ParseName(file.Name),28)

我已尝试过其他扩展属性的加载,它们都可以正常工作。它似乎就是这个给我带来问题的。我已经尝试了大量不同的文件,结果是一样的。不幸的是,我不太了解这一点,所以我会非常乐意为你提供任何帮助。

1 个答案:

答案 0 :(得分:1)

here解释了您的问题的可能原因。 28位/比特率详细信息/属性可能包含Left-To-Right-Mark。补救措施是.WriteLine Mid(spl.GetDetailsOf(spl.ParseName(file.Name),28),2)到文件。

当然,如果其他数据包含非ANSI字符,则需要相应地对其进行清理。