Recursion 文件名中的不可打印字符会破坏我的递归文件列表VB脚本
我创建了一个VB脚本,以递归方式列出它的所有文件和子文件夹文件。脚本开始时很好,但最终在包含文件名中包含不可打印字符的文件的任何文件夹中崩溃,即,在资源管理器中浏览文件夹时,我会看到小正方形。我不知道如何更改我下面的错误处理,以便在它找到包含此类字符的文件时继续 如有任何建议或解决方案,将不胜感激。多谢各位Recursion 文件名中的不可打印字符会破坏我的递归文件列表VB脚本,recursion,vbscript,non-printable,Recursion,Vbscript,Non Printable,我创建了一个VB脚本,以递归方式列出它的所有文件和子文件夹文件。脚本开始时很好,但最终在包含文件名中包含不可打印字符的文件的任何文件夹中崩溃,即,在资源管理器中浏览文件夹时,我会看到小正方形。我不知道如何更改我下面的错误处理,以便在它找到包含此类字符的文件时继续 如有任何建议或解决方案,将不胜感激。多谢各位 Set objFSO = CreateObject("Scripting.FileSystemObject") strFolder = "C:\Input\" Set objFolder =
Set objFSO = CreateObject("Scripting.FileSystemObject")
strFolder = "C:\Input\"
Set objFolder = objFSO.GetFolder(strFolder)
Set NewFile = objFSO.CreateTextFile("C:\Output\" & objFolder.Name & " FileList.txt", True)
Set colFiles = objFolder.Files
On Error Resume Next
For Each objFile In colFiles
NewFile.WriteLine(objFile.Path)
If Err Then
Err.Clear
End If
Next
ShowSubFolders(objFolder)
Sub ShowSubFolders(objFolder)
Set colFolders = objFolder.SubFolders
For Each objSubFolder In colFolders
Set colFiles = objSubFolder.Files
For Each objFile In colFiles
NewFile.WriteLine(objFile.Path)
If Err Then
Err.Clear
End If
Next
ShowSubFolders(objSubFolder)
Next
End Sub
NewFile.Close
将输出文本文件创建为unicode,以便它可以处理“不可打印”字符。CreateTextFile的第三个参数
Set NewFile = objFSO.CreateTextFile(" ... ", True, True)
编辑
如果无法使用unicode文件,则在写入输出文件之前,应将文件/文件夹名称从unicode转换为ansi。这将完成转换
Function Unicode2Ansi( text )
Unicode2Ansi = text
With (WScript.CreateObject("ADODB.Stream"))
' Put data into stream
.Type = 2 '( adTypeText )
.Charset = "x-ansi"
.Open
.WriteText text
'Retrieve data from stream
.Position = 0
Unicode2Ansi = .ReadText
.Close
End With
End Function
并对代码进行修改,将其命名为
NewFile.WriteLine Unicode2Ansi(objFile.Path)
我对VB一窍不通(我不使用MS Windows,只有很少人使用),但这里有一个一般性的建议:您似乎不知道实际使用的是什么编码。没有这些信息,你就是在黑暗中挖掘,因为你不知道你在寻找什么。了解您的设置,以及它是否随安装的不同而变化或保持不变。只有这样,当你知道你的设置中字符是如何编码的,你才能开始调试。谢谢大家。我正在尝试MC ND的解决方案。我已经删除了错误处理,如果错误再次出现,我会注意到它。这似乎是unicode->ANSI翻译错误。谢谢。我将在一夜之间运行脚本,并让您知道结果如何。