VBScript不读取大于260个字符的路径

时间:2016-04-01 19:41:32

标签: vbscript

我应该编写一个脚本,该脚本被赋予一个起始文件夹并循环遍历所有文件夹和文件,如果它遇到大于250的路径,它会将其写入文本文件。它可以工作,但如果路径大于259个字符,它将不会将路径写入文本文件。对此有一个简单的解决方法。我的脚本在底部。谢谢

Const ForWriting = 2
dim x
StartFolder = "C:\Users\Sample\Desktop\Notess\Reports"
LogFile = "C:\Users\Sample\Desktop\rand.txt"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogFile = objFSO.OpenTextFile(LogFile, ForWriting, True)
Call CheckFolder(StartFolder)

Set objFSO = Nothing
objLogFile.Close

Sub CheckFolder(Folder)
    Set ArrFiles = objFSO.GetFolder(Folder).Files
    For Each File In ArrFiles

x=len(file)
        IF X > 250 THEN objLogFile.WriteLine (File & ", "& X)


    Next

    Set ArrSubFolders = objFSO.GetFolder(Folder).SubFolders
    For Each SubFolder In ArrSubFolders
        call CheckFolder(SubFolder)
    Next
End Sub

1 个答案:

答案 0 :(得分:3)

由于Windows中的MAX_PATH变量,这很可能是一个限制。虽然NTFS允许最多32000个字符的路径,但Windows有一个可爱的变量,许多API使用它设置为256.

我的猜测是,FSO虽然很古老,却不会处理大于259的文件路径(256个字符加上“C:\”中的三个字符)

Check out this post over at the excellent blog.codinghorror.com