本文へスキップ
BecomeCoder

バッチファイルコース · 第2章 画面表示と基本操作 · レッスン6

コマンドをつなぐ ― `&` `&&` `||`

導入

ここまでは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 A echo B と書くのは、基本的に同じ動きです。1行にまとめたいとき(後述の if の1行版など)に & が役立ちます。

やってみよう

mkdir 既にあるフォルダ名 はエラーになります。mkdir test && echo 作成成功mkdir test || echo 作成失敗 を、フォルダがある場合とない場合で試すと、&&|| の違いが体感できます。