なるほど この演算子はWindows(Linuxの場合もありますか?)で複数のコマンドを1行にチェーン/結合するために使用されます。コマンドは、先行が正常に完了している限り(終了コード0)、次々に実行されます。
ただし、コマンドを1行に1つずつ指定するバッチファイルで使用できるかどうかはわかりません。この場合、どのようにして同じ効果を達成しますか? どのように分割しますかcmd1 && cmd2 && cmd3
複数行に?どのように終了しますか
cmd1
cmd2
cmd3
最初のコマンドが失敗するとすぐに?
また、このような質問に対する答えを後で見つけるために、オペレーターの名前を知りたいと思います。
cmd1 && cmd2 && cmd3
次のように複数行で書くことができます
cmd1
if not errorlevel 1 cmd2
if not errorlevel 1 cmd3
ここで、各コマンドの実行は前のコマンドの結果に依存します
GNU/Linuxでは、コマンドを分割できますcmd1 && cmd2 && cmd3
次のようなスクリプトファイルの複数の行に(読みやすさなどのために):
cmd1 &&
cmd2 &&
cmd3
それらの違いは次のとおりです。
cmd1
cmd2
cmd3
各コマンドを個別に起動し、ヒットした場合にバッチジョブを終了できるようにします Ctrl + c 終了する前に。
どこで
cmd1 && cmd2 && cmd3
コマンドを次々に起動しますが、スクリプトを見ずに/一度に起動します。
さらなる例として、
最初の例を見てみましょう。cmd1の実行中にスクリプトを編集し、cmd2をcmd3に変更すると、cmd1の終了時にcmd3が読み込まれます。
Linuxでは、ifdown eth0
sshセッションが失われるので、代わりにifdown eth0 && ifup eth0
コマンドをチェーンします。
失敗に関して何かをしたい場合は、ifステートメントとスイッチをリターンコードとエラーレベルとともに確認する必要があります。 リンキー 。
ただし、コマンドを1行に1つずつ指定するバッチファイルで使用できるかどうかはわかりません。
この回答の残りの部分は、Windowsバッチファイル用です。
cmd1 && cmd2 && cmd3
を複数の行に分割するにはどうすればよいですか?コマンドは、if
と%errorlevel%
を使用して分割できます。
Setlocal EnableDelayedExpansion
cmd1
if !ERRORLEVEL! equ 0 (
cmd2
if !ERRORLEVEL! equ 0 (
cmd3
)
)
&&
&&
演算子は、2つの条件演算子のいずれかです。もう1つは||
です。
commandA && commandB
commandA
を実行し、成功した場合はcommandB
を実行します
commandA || commandB
commandA
を実行します。失敗した場合は、commandB
を実行します。
ソース リダイレクト