Loop和递归函数出错

时间:2014-12-18 01:04:53

标签: vbscript

我正在尝试创建一个VbScript文件,该文件将读取包含文件夹名称列表的文本文件。 从这些文件夹名称我需要创建第二个文本文件,打印出具有特定扩展名的所有文件。

我已使用此代码执行任务的第二部分

Option Explicit 'force all variables to be declared
Const ForWriting = 2
Dim objFSO 'File System Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objTS 'Text Stream Object
Set objTS = objFSO.OpenTextFile("C:\Output.txt", ForWriting, True)
Call Recurse("C:\")
objTS.Close()

Sub Recurse(strFolderPath)
    Dim objFolder
    Set objFolder = objFSO.GetFolder(strFolderPath)
    Dim objFile
    Dim objSubFolder

    For Each objFile In objFolder.Files
        'only proceed if there is an extension on the file.
        If (InStr(objFile.Name, ".") > 0) Then
            'If the file's extension is "pfx", write the path to the output file.
            If (LCase(Mid(objFile.Name, InStrRev(objFile.Name, "."))) = ".exe") Then _
                objTS.WriteLine(objfile.Path)
        End If
    Next

    For Each objSubFolder In objFolder.SubFolders
        Call Recurse(objSubFolder.Path)
    Next
End Sub

我试过把它放在一个循环中,但当我这样做时,我得到一行语法错误Sub Recurse(strFolderPath)

您可以提供任何帮助,我们将不胜感激

1 个答案:

答案 0 :(得分:0)

的一种解释
  

我已经尝试将其置于循环但是当我这样做时,我得到语法错误   对于此行 Sub Recurse(strFolderPath)

结果脚本的结构如下所示:

Do Until tsIn.AtEndOfStream
   p = tsIn.ReadLine
   Sub Recurse(p)
   End Sub
   Call Recurse(p)
Loop

输出:

cscript 27537600-B.vbs
..\27537600-B.vbs(3, 4) Microsoft VBScript compilation error: Syntax error

VBScript不允许嵌套的子/函数定义,特别是在循环中(您可能会在顶级代码中混合使用简单语句和子/函数定义,但这更像是一个错误,而不是一个特性)。如果您重新构建脚本,如

Do Until tsIn.AtEndOfStream
   p = tsIn.ReadLine
   Call Recurse(p)
Loop

Sub Recurse(p)
End Sub

您在行中未获得语法错误。