Windowsバッチファイルの作成と実行

Windowsバッチファイル(Batch File)とは

バッチファイルとは、Windowsにおける複数処理(コマンド)を一括で実行する際に使われるプログラムファイルのことです。バッチファイルの中身は、基本的にはコマンドプロンプトで実行できるコマンドを1行ずつ明記したものとなります。バッチファイルでは、変数定義や条件分岐といった実行制御が可能となります。


バッチファイルの拡張子

バッチファイルのファイル拡張子は、「.bat」(Windows バッチファイル)または「.cmd」(Windows コマンド スクリプト)です。多くの場合、「.bat」が採用されます。


バッチファイル名.bat

なお、スクリプトに同じ名前を付けた場合は「.bat」が優先されます。優先順位は「PATHEXT」環境変数で確認できます。


PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

バッチファイルの基本的な文法

規約

  • 一行に一コマンドを記述する。
    • 基本的には、行単位の実行制御となります。ただし、forやifなどの制御構文や、パイプ「|」でコマンドを連続して記述する場合は複数行に記述することも可能です。
  • 空行の扱い
    • 空行またはスペースの行が記述されていても、バッチファイル実行に支障はありません。
  • 大文字小文字の区別
    • 大文字小文字の区別はありません。ただし、文字列定数として定義された文字列は大文字小文字が区別されます。
  • 一行あたりの最大文字数
    • Windowsでは最大文字数制限は無くなりました。(なお、MS–DOSでの文字数は最大127バイトです。)
  • バッチファイルにおける特殊文字
    • 複数のコマンドを繋げるパイプの「|」
    • ファイルの入出力を切り替えるリダイレクト用の「<」「>」「>>」
    • ワイルドカードでファイル名を表記する「?」「*」
  • 非表示処理
    • 先頭行に「@echo off」を記述すると、コマンドプロンプト上に実行内容が表示されなくなります。

バッチファイルでHello Worldを作成する

バッチファイル「helloworld.bat」を作成し、以下を記述します。


@echo off

rem
rem コメント:バッチ処理の説明など
rem

REM 「Hello,World.」と表示する。
echo Hello,World.

rem 何らかのキー入力を待ち合わせる。
pause

rem 終了コードを設定して実行を終了します。
exit /b 0

終了と戻り値

バッチファイルで「exit」コマンドを使用すると、そのバッチファイルを実行しているコマンドプロンプトまで終了してしまう「強制終了」となります。


exit

あるバッチファイルが別のバッチファイル (親バッチファイル)から「call」コマンドで呼ばれた場合に、そのバッチ処理を終了した後で親バッチファイルに処理を戻すには「/b」オプションを指定する必要があります。


exit /b 
exit /b [終了コード]

Windowsバッチファイルの実行

バッチファイルの実行は、コマンドプロンプトからバッチファイル名を指定して実行します。例えば「helloworld.bat」を実行する場合には、以下の通りです。


c:¥> helloworld.bat

実行を強制中断するには

バッチファイルの処理を中断させる時は、「Ctrl+C」キーを押します。(コマンドプロンプトにおけるコマンド処理の中断操作と同様です。)


別バッチファイルの呼び出し

別バッチファイルの呼び出し方法は以下の2通りがあります。

1「call」コマンドを用いることで、バッチファイル内から別のバッチファイル (子バッチファイル) を呼び出すことができます。


call helloworld.bat

2「start」コマンドを用いると、別プロセスで実行されますので、先行コマンドの結果を待つこと無く実行します。


start test02.bat

そのままバッチファイル名をコマンドとして直接指定すると、上手く呼び出せない場合があります。


Windowsバッチファイルの引数

バッチファイルでは、コマンドオプションのように引数を渡すことが出来ます。渡された引数は「%1 から %9までの変数」として保存されます。 「%0」は実行中のバッチファイル名が保存されます。


@echo off
echo 実行ファイル: %0
echo 引数1 = %1
echo 引数2 = %2
echo 引数3 = %3

詳細はWindowsバッチファイル - 引数を参照下さい。


関連ページ