用于执行目录中所有文件的vbScript

时间:2011-10-18 02:30:11

标签: vbscript wmi

我正在尝试编写一个将执行给定目录中所有文件的vbScript(主要是批处理文件)。

我尝试修改删除所有文件的脚本,但我无法让它工作。

这就是我所拥有的:

Option Explicit 
'=========================================================================== 
'  Scheduled Task - Visual Basic ActiveX Script 
'=========================================================================== 

Call ExecuteDirectory("c:\users\public\documents\schedule\daily") 


Function ExecuteDirectory(strPath2Folder) 
    Dim fso, f, fc, f1, strFiles, intFiles
    Dim WshShell

    Set WshShell = CreateObject("WScript.Shell")

    strFiles = "" 

    Set fso = CreateObject("Scripting.FileSystemObject") 
    If (fso.FolderExists(strPath2Folder)) Then 
        Set f = fso.GetFolder(strPath2Folder) 
        Set fc = f.Files 

        '-- Execute each file in Folder 
        For Each f1 in fc 
            strFiles = strFiles & f1.Name & vbCrLf 
            msgbox strPath2Folder & "\" & strFiles

            WshShell.Run Chr(34) & strFiles & Chr(34), 1, true
        Next 

        Set f1 = Nothing 
        Set fc = Nothing 
        Set f = Nothing 


    End If 
    Set fso = Nothing 
End Function

msgbox行显示我想要执行的完整路径和文件名,但运行行生成找不到文件错误。

2 个答案:

答案 0 :(得分:2)

变量strFiles不断构建一个文件列表,其中包含换行符。例如,如果您的文件夹包含文件“test1.bat”和“test2.bat”,您将最终得到:

迭代1 : strFiles =

test1.bat

迭代1 : strFiles =

test1.bat
test2.bat

我认为这不是你想要做的。如果您只想按顺序运行每个脚本,则只需传递单个脚本名称。

尝试将内循环更改为:

    For Each f1 in fc  
        Dim fileToRun
        fileToRun = strPath2Folder & "\" & f1.Name
        WshShell.Run Chr(34) & fileToRun & Chr(34), 1, true 
    Next  

答案 1 :(得分:-1)

这是一种非常草率的方法。如果您需要一次执行批处理文件的整个目录,那么您没有正确使用它们。您应该只需要一个批处理文件或一个脚本。我会开始考虑你的整个系统,以便更好地处理你想要完成的任何事情。