Vbscript 使用VBS扫描\LOGS子文件夹时出现问题

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")

我使用这个VBS扫描一堆目录和子目录,并且只处理以
\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
在屏幕上显示变量来调试代码,以查看路径等值是否与预期值匹配。