vbScript для выполнения всех файлов в директории - PullRequest
1 голос
/ 18 октября 2011

Я пытаюсь написать 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 ]

2 голосов
/ 18 октября 2011

Переменная 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  
0 голосов
/ 18 октября 2011

Это очень небрежный подход. Если вам необходимо одновременно выполнить весь каталог командных файлов, значит, вы не используете их правильно. Вам нужен только один пакетный файл или один скрипт в любое время. Я бы начал смотреть на всю вашу систему для лучшего подхода к тому, что вы пытаетесь достичь.

...