How do I run a batch script from within a batch script?

前端 未结 8 1598
礼貌的吻别
礼貌的吻别 2020-12-12 18:48

How do I call another batch script from within a batch script?

I want it to execute in an if statement.

相关标签:
8条回答
  • 2020-12-12 19:03

    Here is example:

    You have a.bat:

    @echo off
    if exist b.bat goto RUNB
    goto END
    :RUNB
    b.bat
    :END
    

    and b.bat called conditionally from a.bat:

    @echo off 
    echo "This is b.bat"
    
    0 讨论(0)
  • 2020-12-12 19:06

    huh, I don't know why, but call didn't do the trick
    call script.bat didn't return to the original console.
    cmd /k script.bat did return to the original console.

    0 讨论(0)
  • 2020-12-12 19:10

    Run parallelly on separate command windows in minimized state

    dayStart.bat

    start "startOfficialSoftwares" /min cmd /k call startOfficialSoftwares.bat
    start "initCodingEnvironment" /min cmd /k call initCodingEnvironment.bat
    start "updateProjectSource" /min cmd /k call updateProjectSource.bat
    start "runCoffeeMachine" /min cmd /k call runCoffeeMachine.bat
    

    Run sequentially on same window

    release.bat

    call updateDevelVersion.bat
    call mergeDevelIntoMaster.bat
    call publishProject.bat
    
    0 讨论(0)
  • 2020-12-12 19:11

    You can use

    call script.bat
    

    or just

    script.bat
    
    0 讨论(0)
  • 2020-12-12 19:16

    You can just invoke the batch script by name, as if you're running on the command line.

    So, suppose you have a file bar.bat that says echo This is bar.bat! and you want to call it from a file foo.bat, you can write this in foo.bat:

    if "%1"=="blah" bar
    

    Run foo blah from the command line, and you'll see:

    C:\>foo blah
    
    C:\>if "blah" == "blah" bar
    
    C:\>echo This is bar.bat!
    This is bar.bat!
    

    But beware: When you invoke a batch script from another batch script, the original batch script will stop running. If you want to run the secondary batch script and then return to the previous batch script, you'll have to use the call command. For example:

    if "%1"=="blah" call bar
    echo That's all for foo.bat!
    

    If you run foo blah on that, you'd see:

    C:\>foo blah
    
    C:\>if "blah" == "blah" call bar
    
    C:\>echo This is bar.bat!
    This is bar.bat!
    
    C:\>echo That's all for foo.bat!
    That's all for foo.bat!
    
    0 讨论(0)
  • 2020-12-12 19:16

    If you wish to open the batch file in another window, use start. This way, you can basically run two scripts at the same time. In other words, you don't have to wait for the script you just called to finish. All examples below work:

    start batch.bat
    start call batch.bat
    start cmd /c batch.bat
    

    If you want to wait for the script to finish, try start /w call batch.bat, but the batch.bat has to end with exit.

    0 讨论(0)
提交回复
热议问题