バッチ基礎
Windowsバッチの基礎知識です。
Windowsバッチの例
test.bat
(実行例)
各行の解説
- @echo off:各コマンドの実行結果を表示しない。バッチファイルの1行目にはほぼ必須のコマンドです。
- setlocal:環境変数のローカル化開始。これをやっておくとバッチ内で設定した環境変数はバッチ外に影響を及ぼしません。
- rem:コメント行
- set x=123:環境変数xに123を代入
- rem:コメント行
- echo %x%:環境変数xの値を画面に表示
- endlocal:環境変数のローカル化終了
- exit /b 0:バッチの実行を、終了コード0にて終了
endlocalは省略しても暗黙的に実行されます。
備考
- バッチファイルの拡張子は、.batまたは .cmdを使用します。
- 文字コードはSJIS (Shift-JIS)で作成します。
- 上のサンプルでも記述してある @echo offとsetlocalは、基本的にバッチファイルお決まりの記述です。
コメント
バッチの中にコメントを書きたい場合は、「REM」を使用します。
また、昔からあるテクニックで「::」を使用する場合もあります。
(厳密にはエラーにならない無効なラベルになるため、コメントと同等に使えるという感じです)
【コメントサンプル】
バッチに引数を渡す
実行するバッチファイルに引数を渡したい場合は、
バッチ名の後ろに半角スペース区切りで引数1 引数2 ...という感じで渡せます。
バッチ内で引数の値を取得するには、%1、%2 ... という感じで取得できます。
%0でバッチファイル名を取得できます。
%*で引数に指定されて全ての値を取得できます。
例)引数に渡した値を表示する
(test.bat)
実行例
引数は最大9つまで指定できます。(%1~%9)
「@」アットマーク
バッチプログラム内において、コマンドの先頭に「@」を付けると実行するコマンドが非表示になります。
例)@なしの場合
(sample01.bat)
実行例
@なしだと、実行したコマンドが表示されます。
例)@ありの場合
(sample02.bat)
実行例
@なしだと、実行したコマンドが表示されません。
しかし、すべてのコマンドの先頭に@を付けるのは面倒です。
このような場合は、バッチファイルの先頭に「@echo off」と記載すれば、すべてのコマンドの先頭に@を付けたことになります。
例)バッチファイルの1行目に@echo off を記載した場合
(sample03.bat)
実行例
実行コマンドはすべて表示されません。
実行中のバッチがあるフォルダを取得する(%~dp0)
バッチプログラム内でバッチがあるフォルダを取得するには「%~dp0」を使用します。
例)実行中バッチがあるフォルダを表示して移動する
(test.bat)
「%~dp0」はバッチプログラムの中で使用できます。
ラベル(:)
「:」(コロン)を指定すると、ラベルの意味になります。
ラベルを使用すると、バッチ内の任意の場所に名前を付けることができます。
活用方法としてはラベルを指定しておき、GOTOでラベルへ処理を飛ばすなどの使い方ができます。
例)実行中バッチがあるフォルダを表示して移動する
実行例
この例では、GOTO指定で「:END_PROGRAM」へ処理を飛ばしているため
「別のセクションです。」は表示されません。