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

VBScript未读取大于260个字符的路径,vbscript,Vbscript,我应该写一个脚本,给它一个起始文件夹,并在所有文件夹和文件中循环,如果遇到大于250的路径,它会将其写入文本文件。它可以工作,但如果路径大于259个字符,它将不会将路径写入文本文件。有没有一个简单的解决办法。我的脚本在底部。多谢各位 Const ForWriting = 2 dim x StartFolder = "C:\Users\Sample\Desktop\Notess\Reports" LogFile = "C:\Users\Sample\Desktop\rand.txt" Set o

我应该写一个脚本,给它一个起始文件夹,并在所有文件夹和文件中循环,如果遇到大于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

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

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


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

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


是的,这是Win32 API造成的限制。到目前为止,我发现解决VBScript问题的唯一可行方法是通过
subst
将父文件夹映射到驱动器号来缩短路径,然后从该驱动器继续。是的,这是Win32 API造成的限制。到目前为止,我发现解决VBScript问题的唯一可行方法是通过
subst
将父文件夹映射到驱动器号,然后从该驱动器继续,从而缩短路径。