Executing multiple commands from a Windows cmd script

后端 未结 8 1489
鱼传尺愫
鱼传尺愫 2020-12-12 12:54

I\'m trying to write a Windows cmd script to perform several tasks in series. However, it always stops after the first command in the script.

The command it stops af

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

    I have just been doing the exact same(ish) task of creating a batch script to run maven test scripts. The problem is that calling maven scrips with mvn clean install ... is itself a script and so needs to be done with call mvn clean install.

    Code that will work

    rem run a maven clean install
    cd C:\rbe-ui-test-suite 
    call mvn clean install
    rem now run through all the test scripts
    call mvn clean install -Prun-integration-tests -Dpattern=tc-login
    call mvn clean install -Prun-integration-tests -Dpattern=login-1
    

    Note rather the use of call. This will allow the use of consecutive maven scripts in the batch file.

    0 讨论(0)
  • 2020-12-12 13:18

    If you are running in Windows you can use the following command.

    Drive:

    cd "Script location"
    schtasks /run /tn "TASK1"
    schtasks /run /tn "TASK2"
    schtasks /run /tn "TASK3"
    exit
    
    0 讨论(0)
  • 2020-12-12 13:27

    Using double ampersands will run the second command, only if the first one succeeds:

    cd Desktop/project-directory && atom .
    

    Where as, using only one ampersand will attempt to run both commands, even if the first fails:

    cd Desktop/project-directory & atom .
    
    0 讨论(0)
  • 2020-12-12 13:28

    I don't know the direct answer to your question, but if you do a lot of these scripts, it might be worth learning a more powerful language like perl. Free implementations exist for Windows (e.g. activestate, cygwin). I've found it worth the initial effort for my own tasks.

    Edit:

    As suggested by @Ferruccio, if you can't install extra software, consider vbscript and/or javascript. They're built into the Windows scripting host.

    0 讨论(0)
  • 2020-12-12 13:30

    Note that you don't need semicolons in batch files. And the reason why you need to use call is that mvn itself is a batch file and batch files need to call each other with call, otherwise control does not return to the caller.

    0 讨论(0)
  • 2020-12-12 13:32

    When you call another .bat file, I think you need "call" in front of the call:

    call otherCommand.bat
    
    0 讨论(0)
提交回复
热议问题