Vbscript 使用VBS扫描\LOGS子文件夹时出现问题
我使用这个VBS扫描一堆目录和子目录,并且只处理以Vbscript 使用VBS扫描\LOGS子文件夹时出现问题,vbscript,filesystemobject,Vbscript,Filesystemobject,我使用这个VBS扫描一堆目录和子目录,并且只处理以\LOGS结尾的子目录。我的代码没有将procIt设置为1,因此它不会处理这些目录。代码很简单,但我遗漏了一些东西: Set objFSO = CreateObject("Scripting.FileSystemObject") Const ForAppending = 2 Dim objFSO:Set objFSO = CreateObject("Scripting.FileSystemObject")
\LOGS
结尾的子目录。我的代码没有将procIt
设置为1,因此它不会处理这些目录。代码很简单,但我遗漏了一些东西:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Const ForAppending = 2
Dim objFSO:Set objFSO = CreateObject("Scripting.FileSystemObject")
scriptdir = replace(WScript.ScriptFullName,WScript.ScriptName,"")
dim dateAndTime
dim xFolder
' set up log file
xDay = right("0" & Day(Date),2)
xMonth = right("0" & Month(Date),2)
xHours = right("0" & Hour(time),2)
xMins = right("0" & Minute(time),2)
xSecs = right("0" & Second(time),2)
dateAndTime = xDay & "-" & xMonth & "-" & Year(Date) & "_" & xHours & xMins & xSecs
logFile = scriptdir & "log\LogFile_" & dateAndTime & ".log"
Dim objLogFile:Set objLogFile = objFSO.CreateTextFile(logfile, 2, True)
' read folder%
objStartFolder = "C:\test\custom\"
procIt = 0
Set objFolder = objFSO.GetFolder(objStartFolder)
endOf = UCase(Right(objFolder.Path, 5))
If endOf = "\LOGS" then
procIt = 1
End If
If procIt = 1 then
objLogFile.Write "Path: " & objFolder.Path & " - " & endOf & procIt & vbCrLf
Set colFiles = objFolder.Files
For Each objFile in colFiles
objLogFile.Write "File: " & objFile.Name & vbCrLf
Next
End If
ShowSubfolders objFSO.GetFolder(objStartFolder)
Sub ShowSubFolders(Folder)
For Each Subfolder in Folder.SubFolders
procIt = 0
endOf = UCase(Right(Subfolder.Path, 5))
If endOf = "\LOGS" Then
procIt = 1
End If
If procIt = 1 Then
objLogFile.Write Subfolder.Path & " - " & endOf & procIt & vbCrLf
Set objFolder = objFSO.GetFolder(Subfolder.Path)
Set colFiles = objFolder.Files
For Each objFile in colFiles
objLogFile.Write objFile.Name & vbCrLf
Next
ShowSubFolders Subfolder
End If
Next
End Sub
objLogFile.Close
ShowSubfolders
只查看当前形式的第一级子文件夹。
例如,C:\test\custom\first
下的logs
文件夹将永远找不到,因为first
不会将procIt
更改为1
如果将递归调用移到If procIt=1
块之外,它将查看所有子文件夹,而不仅仅是第一级,并将查找您的日志
文件夹:
Sub ShowSubFolders(Folder)
For Each Subfolder In Folder.SubFolders
procIt = 0
endOf = UCase(Right(Subfolder.Path, 5))
If endOf = "\LOGS" Then procIt = 1
If procIt = 1 Then
Set objFolder = objFSO.GetFolder(Subfolder.Path)
Set colFiles = objFolder.Files
For Each objFile In colFiles
objLogFile.Write objFile.Name & vbCrLf
Next
End If
' Call ShowSubFolders recursively to handle subfolders
ShowSubFolders Subfolder
Next
End Sub
您可以尝试通过使用
Wscript.Echo
在屏幕上显示变量来调试代码,以查看路径等值是否与预期值匹配。