バッチファイルに対するコマンドライン引数は次の変数で参照できる.
参照 | 説明 |
---|---|
%1 〜%9 |
バッチファイルに与えたコマンドライン引数の1番目〜9番目の引数を参照する.> foo.bat a b c %1 →a ,%2 →b ,%3 →c ,
%4 以降は空
|
%0 |
実行したコマンド(バッチファイル)を参照する.> foo.bat a b c %0 →foo.bat
|
%* |
%0 を除くすべてのコマンドライン引数を参照する.
shift の影響を受けない.> foo.bat 1 2 3 4 5 6 7 8 9 a b c %* →1 2 3 4 5 6 7 8 9 a b c
|
%0
はユーザがタイプした字面のまま
%0
には,バッチファイルを起動する際,ユーザがタイプしたままの文字列が設定される.
例えば,カレントディレクトリにあるargs.bat
を実行する場合,args
,args.bat
,.\args.bat
など,
いくつかの等価な書き方があるが,ユーザがargs
とタイプして実行した場合には%0
もargs
となり,
ユーザがargs.bat
とタイプして実行した場合には%0
もargs.bat
となる.
したがって,%0
の値を調べて動作を振り分けるようなバッチファイルを作る場合には,
args
,args.bat
,.\args.bat
など,
同じ意味の違う文字列が入ってくるケースにも適切に対処できるようにプログラミングしておかなければならない.
shift
shift の使用例 shift.bat |
---|
@echo off :loop echo %0 shift if "%0" == "" goto :EOF goto loop |
※if コマンドの"%0" の引用符は必須 |
shift
するとコマンドライン引数がひとつずつ前にずれ,
%1
〜%9
がそれぞれ%0
〜%8
で参照できるようになり,
%9
には10番目のコマンドライン引数として指定されていた文字列がはいってくる
(もとの%0
の内容は捨てられる).
不特定多数のコマンドライン引数について同じ処理を前から順番にひとつずつ実行していくようなバッチファイルを作成する際に便利.
なお,Windows XPのshift
では,ずらす位置が指定できるようになっていて,
ずらす位置が指定できるようになった.例えばshift /1とすると,%0はそのままで,%1が捨てられ,%2以降がひとつずつ前にずれてくる.
※修飾子については次の資料を参照