开发者

VBS Script - Run series of .batch jobs

Help me run a series of .bat script

they are located like so:

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

Than开发者_如何学Cks in advance, Best regards, Joe


Would a simple shell command do? You can call this from a command prompt:

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

or the following from a .bat file:

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


found a way that works, should have tried this first of all. I am a bit embarrassed that it was this easy actually:

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


As originally asked, here is a VBScript solution...

The problem described is probably related to the "Script-Working-Directory".

Try this ...

    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  

Notes:

 '' 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

More info on "objShell.Run" can be found here: http://ss64.com/vb/run.html

The above examples will cause VBScript to wait for each called ".bat" to complete and return an "ExitCode" before proceeding.

If you don't want VBScript to wait for one ".bat" to complete before proceeding to the next then set blnWaitOnReturn = False, and remove intExitCode like:

    ...
    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
    ...

If you want the ability to get the "Status" and "ProcessID", and access the standard streams of the executable to read/write to the process's stdout/stderr in real-time while the process executes, then use "objShell.Exec".

More info on "objShell.Exec" can be found here: http://ss64.com/vb/exec.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜