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