我应该编写一个脚本,该脚本被赋予一个起始文件夹并循环遍历所有文件夹和文件,如果它遇到大于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
答案 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