バッチファイルに対するコマンドライン引数は次の変数で参照できる.
| 参照 | 説明 |
|---|---|
%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など,
同じ意味の違う文字列が入ってくるケースにも適切に対処できるようにプログラミングしておかなければならない.
shiftshiftの使用例 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以降がひとつずつ前にずれてくる.
※修飾子については次の資料を参照