VBS Script - запуск ряда заданий .batch - PullRequest
0 голосов
/ 13 октября 2010

Помогите мне запустить серию .bat-скриптов

они расположены так:

p: \ Co-Brand \ export.bat p: \ Generic \ export.bat p:\ Tri-Brand \ export.bat

Заранее спасибо, С наилучшими пожеланиями, Джо

Ответы [ 3 ]

0 голосов
/ 13 октября 2010

нашел способ, который работает, должен был попробовать это в первую очередь.Я немного смущен, что на самом деле это было так просто:

cd P: \ Co-Brand \

CALL Export.bat

cd P: \ Generic \

CALL Export.bat

cd P: \ TriBrand \

CALL Export.bat

cd P: \ UBA \

CALL Export.bat

0 голосов
/ 27 июня 2012

Как и было изначально задано, вот решение VBScript ...

Описанная проблема, вероятно, связана с "Script-Working-Directory".

Попробуйте это ...

    Dim objShell
    Dim blnWaitOnReturn
    Dim strOriginalCD
    Dim strCmd
    Dim intWindowStyle
    Dim intExitCode

    Set objShell = WScript.CreateObject("Wscript.Shell")
 '' if necessary, save the original "Script-Working-Directory"
    strOriginalCD = objShell.CurrentDirectory

    intWindowStyle = 1
    blnWaitOnReturn = True

    objShell.CurrentDirectory = "p:\Co-Brand\"
    strCmd = "%comspec% /K export.bat"
    intExitCode = objShell.Run(strCmd, intWindowStyle, blnWaitOnReturn)

    objShell.CurrentDirectory = "p:\Generic\"
    strCmd = "%comspec% /K export.bat"
    intExitCode = objShell.Run(strCmd, intWindowStyle, blnWaitOnReturn)

    objShell.CurrentDirectory = "p:\Tri-Brand\"
    strCmd = "%comspec% /K export.bat"
    intExitCode = objShell.Run(strCmd, intWindowStyle, blnWaitOnReturn)

 '' if necessary, restore the original "Script-Working-Directory"
    objShell.CurrentDirectory = strOriginalCD  

Примечания:

 '' If filename contains spaces make sure to add double-quotes around filename
    strCmd = "%comspec% /K " & Chr(34) & "File name with spaces.bat" & Chr(34)

 '' To run the commands in a "Hidden" window, use:
    intWindowStyle = 0

 '' To run the commands "Minimized", use:
    intWindowStyle = 7

Более подробную информацию о "objShell.Run" можно найти здесь: http://ss64.com/vb/run.html

Приведенные выше примеры заставят VBScript ждать завершения каждого вызываемого «.bat» и возвращать «ExitCode», прежде чем продолжить.

Если вы не хотите, чтобы VBScript ждал завершения одного .bat, прежде чем переходить к следующему, установите blnWaitOnReturn = False и удалите intExitCode, например:

    ...
    blnWaitOnReturn = False

    objShell.CurrentDirectory = "p:\Co-Brand\"
    strCmd = "%comspec% /K export.bat"
    objShell.Run strCmd, intWindowStyle, blnWaitOnReturn

    objShell.CurrentDirectory = "p:\Generic\"
    strCmd = "%comspec% /K export.bat"
    objShell.Run strCmd, intWindowStyle, blnWaitOnReturn

    objShell.CurrentDirectory = "p:\Tri-Brand\"
    strCmd = "%comspec% /K export.bat"
    objShell.Run strCmd, intWindowStyle, blnWaitOnReturn
    ...

Если вам нужна возможность получить «Status» и «ProcessID» и получить доступ к стандартным потокам исполняемого файла для чтения / записи в stdout / stderr процесса в режиме реального времени во время выполнения процесса, используйте «objShell». .Exec».

Более подробную информацию о "objShell.Exec" можно найти здесь: http://ss64.com/vb/exec.html

0 голосов
/ 13 октября 2010

Подойдет ли простая команда оболочки? Вы можете вызвать это из командной строки:

for /R %F in (*.bat) do "%F"

или следующее из файла .bat:

for /R %%F in (*.bat) do call "%%F"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...