Сценарий VBS — запуск серии заданий .batch

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

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

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

Заранее спасибо, С уважением, Джо


person jmituzas    schedule 12.10.2010    source источник


Ответы (3)


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

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

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

for /R %%F in (*.bat) do call "%%F"
person Dirk Vollmar    schedule 12.10.2010
comment
хорошо, что я действительно хотел бы сделать, это выполнить пакетный сценарий из конца сценария .vbs. У меня были проблемы с попыткой запустить их из командной строки и сценариев .bat, не найдя правильных путей. По какой-то причине кажется, что он использует тот же путь, откуда вы его запускаете, а не от того места, где находится фактический скрипт .bat. Надеялся, что скрипт .vbs поможет, но, судя по его виду, это, вероятно, не поможет. Любой способ указать путь, чтобы использовать путь, по которому находится файл? - person jmituzas; 13.10.2010

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

компакт-диск P:\Co-бренд\

ЗВОНОК Экспорт.bat

компакт-диск P:\Универсальный\

ЗВОНОК Экспорт.bat

компакт-диск P:\TriBrand\

ЗВОНОК Экспорт.bat

компакт-диск P:\UBA\

ЗВОНОК Экспорт.bat

person jmituzas    schedule 13.10.2010

Как изначально было задано, вот решение 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

person Kevin Fegan    schedule 27.06.2012