
Windowsに3つのことを実行する.batファイルがあります
cmd1 arg1 arg2
cmd2 arg3
cmd3 arg4 arg5 arg6
時々 cmd1 が失敗することがあり、それは問題ありません。続行して cmd2 と cmd3 を実行したいのですが、bat が cmd1 で停止します。どうすればこれを回避できますか?
アップデート明確にするために言っておきますが、これらは他の .bat ファイルではなく、exe コマンドです。これを実現するために .bat ファイルのツリーを構築する必要がないことを願っています。
答え1
もう一つの選択肢は、アンペアスタンド(&
)を使うことです。
cmd1 & cmd2 & cmd3
ダブルを使用する場合は、前のコマンドが正常に完了した場合にのみ続行されます(%ERRORLEVEL%==0
)
cmd1 && cmd2 && cmd3
二重パイプ(||
)を使用すると、前のコマンドがエラーコード(%ERRORLEVEL% NEQ 0
)で完了した場合にのみ次のコマンドが実行されます。
cmd1 || cmd2 || cmd3
答え2
これは私にとってはうまくいきました:
cmd.exe /c cmd1 arg1
cmd2
...
これは、cmd.exe
Windows コマンド インタープリターの新しいインスタンスでコマンドを実行するために使用されます。これにより、失敗したコマンドによってバッチ スクリプトが中断されることはありません。この/c
フラグは、コマンドの実行が完了するとすぐにインタープリターを終了するように指示します。
cmd2
最初のコマンドが失敗した場合でも実行されます。cmd /?
詳細については、Windows コマンド プロンプトを参照してください。
答え3
cmd が他の .bat ファイルであると仮定すると、コマンドは次のようにスタックされます。
call cmd1
call cmd2
call cmd3
答え4
追加するにはカナダ人ルークの答えスクリプトをもう少し整理したい場合は、^
次のように、スクリプト内の新しい行でコマンド チェーンを継続するために を使用できます。
scoop install windows-terminal & ^
scoop install joplin & ^
scoop install neovim & ^
scoop install autohotkey & ^
... & ^
scoop update -a
醜いものの代わりに
scoop install windows-terminal & scoop install joplin & scoop install neovim & ...