Windows:バッチファイル
コマンドプロンプトで実行できるコマンドをまとめて書いたファイル
BATファイル
cmd.exe (コマンドインタプリタ)
もともとはMS-DOSの機能
非常に古くから使われている
一括処理に便利
定型作業の自動化
複雑な処理は困難
「引用符」がちゃんと使える形にはなっていないので、 文字列変数、コマンドのパラメータ等に関する制限がある。
while 文、switch 文がないので、if, goto に頼りがちになり、 スパゲッティ化しやすい。
フィルタやバッチファイル用に用意されているコマンドが少ない。
ヒアドキュメントが書けない。
長いコマンドを複数行に分けて書けない。
変数
環境変数
環境変数の値を利用するときは、変数名を % で囲んで %[変数名]% となる
変数の一覧
$ set
変数の設定
$ set 変数名=値
変数の削除
$ set 変数名=
局所変数 %[変数名]
式
( ) (カッコ)
! (論理反転)、~ (ビット反転)、- (符号反転) の 単項演算子
*, /, +, -, % 等の四則演算子 (% は剰余)
C言語と同等の <<, >>, &, ^, | 等のビット演算子
制御構造
if 文
$ if 条件 コマンド
$ if 条件 コマンド1 else コマンド2
for 文
指定リスト分だけ実行
code:bat
for %変数名 in (リスト) do (
コマンド
..........
)
単調な整数リストに対して実行 (C 言語の for 文似)
code:bat
for /l %変数名 in (初期値,増分,終了値) do (
コマンド
..........
)
テキストファイルの各行に対して実行
code:bat
for /f "オプション" %変数名 in (ファイルリスト) do (
コマンド
..........
)
goto 文
$ goto ラベル名
$ :ラベル名
コメント行
$ rem
表示
表示しない
$ @echo off
表示する
$ @echo on
強制終了
$ exit /b 終了コード
exitはcmd.exeそのものを終了させるコマンドなので、基本的にそのままは使わない
一時停止
code:bat
echo 中断時に表示させる任意のメッセージ
pause > nul
入力待ち
$ set /p 変数名=表示メッセージ
別バッチファイルの呼び出し
$ call バッチファイル
$ exit /b 終了コード
日本語の扱い
シフトJIS(Shift_JIS) と ユニコード(utf-8)
さらに、utf-8にはBOMつきとBOMなしがある
バッチファイル
コマンドプロンプト