変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

【Windows10】BATファイル

コマンドプロンプトから実行できるコマンドをファイル化したスクリプトファイル。
拡張子は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

setlocalendlocalで処理をくくれば、中での変数の操作は一切無かったことになる。
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ファイルのあるフォルダにカレントドライブとカレントディレクトリィを変えると安心。
 





top