導入
ここまでは1行に1コマンドでしたが、複数のコマンドを1行につないだり、「前のコマンドが成功したときだけ次を実行する」といった条件付きのつなぎ方もできます。この記号を知っておくと、バッチがぐっと表現豊かになります。
説明
3つのつなぎ記号があります。
A & B… A を実行し、成功・失敗にかかわらず続けて B も実行するA && B… A が 成功したときだけ B を実行するA || B… A が 失敗したときだけ B を実行する
@echo off
rem 単純に順番に実行(結果は問わない)
echo おはよう & echo こんにちは
rem フォルダ作成が成功したら中へ移動
mkdir work && cd work
rem コピーに失敗したらメッセージを出す
copy data.txt backup.txt || echo コピーに失敗しました
「成功・失敗」は、各コマンドが残す 終了コード(errorlevel) で判定されます(第5章で詳しく扱います)。今は「&& は成功したら、|| は失敗したら」という語感で覚えておけば十分です。
&と改行はほぼ同じecho A & echo Bと、2行に分けてecho Aecho Bと書くのは、基本的に同じ動きです。1行にまとめたいとき(後述のifの1行版など)に&が役立ちます。
やってみよう
mkdir 既にあるフォルダ名 はエラーになります。mkdir test && echo 作成成功 と mkdir test || echo 作成失敗 を、フォルダがある場合とない場合で試すと、&& と || の違いが体感できます。