コマンドプロンプトから実行できるコマンドをファイル化したスクリプトファイル。
拡張子はBAT。
スクリプトファイルなので、自力では実行できない。
これを読んで実行するプログラムはCMDコマンド。
コマンドプロンプトで・・・
延々とコマンドを1行づつ入力するのは面倒だし、ミスも起きる。
実行するコマンドをメモ帖にペタペタと貼ってBATファイルにしておけば、後で一気に実行できるのはとても便利。
BATファイルで使える変数は環境変数とほぼ同じ。
なので、内容を書き換えると以降のコマンドラインにも影響を与える。
ABC.BAT
SET ABC=ABCです ECHO %ABC%ね。
の結果は
> SET ABC=ABCです
> ECHO ABCですね。
ABCですね。
その後のコマンドプロンプトでは
> SET ABC ABC=ABCです > ECHO %ABC% ABCです
変数の変更が引き継がれると厄介な時は
setlocal・・・(処理)・・・endlocal
とsetlocalとendlocalで処理をくくれば、中での変数の操作は一切無かったことになる。
for文で使う%変数(%%Zとか単一文字のみ)はコマンドプロンプトには反映されない。
ABCD.BAT
@ECHO OFF FOR %%Z IN (*.BAT) DO ECHO %%Zを見つけました
の結果は
ABC.batを見つけました ABCD.batを見つけました
つづけて環境変数を調べてみると
> SET Z 環境変数 Z が定義されていません
となる。
BATファイルの実行状況は、BATを終了するEXITコマンドで戻り値(数値だけ)を渡すことができる。
EXIT 0
しかし、これではコマンドプロンプトの窓が閉じてしまうので、
EXIT /B 0
の方がいい。コマンドプロンプトからはERRORLEVEL変数として参照できる。
BATファイルの実行時に引き渡したパラメータは、%1 %2 の様な形式でBATファイル内で参照できる。
%0は、BATファイルのファイル名(ABCなど)。
%~f0は、完全なフルパス名(C:\Users\UserName\ABC.BATなど)。
%~d0は、ドライブ名(C:など)。
%~p0は、フルパス名(\Users\UserName\ABC.BATなど)。
デスクトップに見えるフォルダからBATファイルをダブルクリックして実行すると、カレントディレクトリィはドコになっているか判ったものではない。
そんなときには
CD /D %~dp0
でBATファイルのあるフォルダにカレントドライブとカレントディレクトリィを変えると安心。