バッチファイル内のコマンドチェーン用の複数行 && コンビネータ演算子

バッチファイル内のコマンドチェーン用の複数行 && コンビネータ演算子

なるほどこの演算子は、Windows (Linux でも可能?) で、複数のコマンドを 1 行に連結/結合するために使用されます。コマンドは、前のコマンドが正常に完了する限り (終了コード 0)、次々に実行されます。

しかし、1 行に 1 つのコマンドを次々に指定するバッチ ファイルで使用できるかどうかはわかりません。 この場合、どうすれば同じ効果が得られますか?cmd1 && cmd2 && cmd3複数の行に分割するにはどうすればいいですか? どのように終了しますか

cmd1
cmd2
cmd3

最初のコマンドが失敗するとすぐに?

後でこのような質問の答えを自分で見つけられるように、オペレーターの名前も知りたいです。

答え1

cmd1 && cmd2 && cmd3

複数行で書くこともできる

cmd1
if not errorlevel 1 cmd2
if not errorlevel 1 cmd3

各コマンドの実行は、前のコマンドの結果に依存する。

答え2

cmd1 && cmd2 && cmd3GNU/Linux では、次のようにスクリプト ファイル内でコマンドを複数行に分割できます(たとえば、読みやすくするため)。

cmd1 &&
cmd2 &&
cmd3

答え3

それらの違いは次のとおりです。

cmd1
cmd2
cmd3

Ctrl各コマンドを個別に実行し、1 つのコマンドが終了する前に+を押すとバッチ ジョブを終了できますc

一方

cmd1 && cmd2 && cmd3

スクリプトを確認せずに、一度にコマンドを次々に起動します。

さらに例を挙げると、

最初の例を挙げると、cmd1 の実行中にスクリプトを編集し、cmd2 を cmd3 に変更すると、cmd1 が終了したときに cmd3 が読み込まれます。

Linux では、これを行うとifdown eth0ssh セッションが失われるため、代わりにifdown eth0 && ifup eth0コマンドを連鎖します。

失敗に関して何かしたい場合は、戻りコードとエラーレベルとともに、if ステートメントとスイッチを確認する必要があります。リンク

答え4

バッチ ファイルの場合、各条件演算 && (または ||) の後に ^ 区切り文字を追加する必要があります。例:

echo 1 && ^
echo 2 && ^
copy >null && ^
echo 4

関連情報