3つのことを行う.batファイルがWindowsにあります
cmd1 arg1 arg2
cmd2 arg3
cmd3 arg4 arg5 arg6
Cmd1が失敗することもありますが、問題ありません。cmd2とcmd3を引き続き実行して実行したいと思います。しかし、私のバットはcmd1で止まります。どうすればこれを回避できますか?
pdate明確にするために-これらは他の.batファイルではなく、exeコマンドです。うまくいけば、これを達成するためだけに.batファイルのツリーを構築する必要はありません。
別のオプションは、アンパスタンド(&
)
cmd1 & cmd2 & cmd3
Doubleを使用する場合、前のコマンドが正常に完了した場合にのみ実行されます(%ERRORLEVEL%==0
)
cmd1 && cmd2 && cmd3
二重パイプ(||
)、前のコマンドがエラーコード(%ERRORLEVEL% NEQ 0
)
cmd1 || cmd2 || cmd3
Cmdsが他の.batファイルであると想定すると、次のようなコマンドがスタックされます。
call cmd1
call cmd2
call cmd3
これは私のために働きました:
cmd.exe /c cmd1 arg1
cmd2
...
これはcmd.exe
コマンドをWindowsコマンドインタープリターの新しいインスタンスで実行するため、失敗したコマンドがバッチスクリプトを中断することはありません。 /c
フラグは、コマンドの実行が完了するとすぐに終了するようインタープリターに指示します。
cmd2
は、最初のコマンドが失敗した場合でも実行されます。見る cmd /?
詳細については、Windowsコマンドプロンプトから。