![バッチファイル内のコマンドチェーン用の複数行 && コンビネータ演算子](https://rvso.com/image/1444055/%E3%83%90%E3%83%83%E3%83%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%86%85%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E7%94%A8%E3%81%AE%E8%A4%87%E6%95%B0%E8%A1%8C%20%26%26%20%E3%82%B3%E3%83%B3%E3%83%93%E3%83%8D%E3%83%BC%E3%82%BF%E6%BC%94%E7%AE%97%E5%AD%90.png)
なるほどこの演算子は、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 && cmd3
GNU/Linux では、次のようにスクリプト ファイル内でコマンドを複数行に分割できます(たとえば、読みやすくするため)。
cmd1 &&
cmd2 &&
cmd3
答え3
それらの違いは次のとおりです。
cmd1
cmd2
cmd3
Ctrl各コマンドを個別に実行し、1 つのコマンドが終了する前に+を押すとバッチ ジョブを終了できますc。
一方
cmd1 && cmd2 && cmd3
スクリプトを確認せずに、一度にコマンドを次々に起動します。
さらに例を挙げると、
最初の例を挙げると、cmd1 の実行中にスクリプトを編集し、cmd2 を cmd3 に変更すると、cmd1 が終了したときに cmd3 が読み込まれます。
Linux では、これを行うとifdown eth0
ssh セッションが失われるため、代わりにifdown eth0 && ifup eth0
コマンドを連鎖します。
失敗に関して何かしたい場合は、戻りコードとエラーレベルとともに、if ステートメントとスイッチを確認する必要があります。リンク。
答え4
バッチ ファイルの場合、各条件演算 && (または ||) の後に ^ 区切り文字を追加する必要があります。例:
echo 1 && ^
echo 2 && ^
copy >null && ^
echo 4