- ■バッチパラメータについて 通常は変数名の前に識別文字の「%」をつけて表される。 「!」をつけることもあるが、それはNT系のコマンドインタープリタ「cmd.exe」 でサポートしている遅延環境変数を表現する時に採用される。 「%」を使用するやり方はMS-DOSの頃からずっと続く一般的な環境変数の表記方法である。 パラメータ「%1」はバッチファイル実行時に付加された最初のパラメータを表す。 2番目は「%2」、3番目は「%3」で全部で9個のパラメータを渡す事ができる。 特別なものに「%0」があり、これは実行されたバッチファイル名を表す。 これらの変数はいずれも文字列型の変数として取り扱われるが、 下記のような修飾子をつければ簡単な編集が可能。 修飾子 機能・用途 %~1 全ての引用句(")を削除して%1を展開する。 %~f1 %1を完全修飾パス名に展開する。 %~d1 %1をドライブ名だけに展開する。 %~p1 %1をパスだけに展開する。 %~n1 %1をファイル名だけに展開する。 %~x1 %1をファイル拡張子だけに展開する。 %~s1 展開されたパスはMS-DOSの「8.3形式」でも短い名前だけを含む。 %~a1 %1をファイル属性に展開する。 %~t1 %1をファイルの日付・時刻に展開する。 %~z1 %1をファイルのサイズに展開する。 %~$PATH:1 PATH環境に指定されているディレクトリを検索し、最初に見つかった完全修飾名 に%1を展開する。環境変数名が定義されていない場合、また検索してもファイルが見つからなかった 場合は、この修飾子を指定すると空の文字列に展開する。
バッチファイルのパラメータ - みちしるべ
0はバッチファイルのファイル名となる。 C言語と同じ。Javaをやってる人は違和感があるかも。 arg1.bat D:\MyDoc\work\#blog\コマンドプロンプト>arg1.bat arg1.bat バッチファイルで使用できるパラーメータは%0〜%9まで arg2.bat %10は使えないので、%1と0の文字列と解釈されてしまう。 (コマンドパラメータが1〜11だと気づかないw) D:\MyDoc\work\#blog\コマンドプロンプト>arg2.bat a b c d e f g h i j k a b c d e f g h i a0 a1 10個以上パラメータを使いたい場合 %*を使用することで全部表示することはできる。 arg3.bat D:\MyDoc\work\#blog\コマンドプロンプト>arg3.bat a b c d e f g h i j k a b c d e f g h i j k %*で表示できるけど・・・ いや、そうじゃなくて個別に10個以上パラメータを使いたいたいんだよ 個別に10個以上パラメータを使いたい場合 この場合は、shiftを使ってコマンドパラメータをずらしていく arg4.bat D:\MyDoc\work\#blog\コマンドプロンプト>arg4.bat a b c d e f g h i j k a b c d e f g h i j k- ■REM・・注釈を加える。命令は無視される。
- コマンドプロンプトの「%1」と「%~1」の違いがわからない - その他 ...2010年10月19日 ... コマンドプロンプトの「%1」と「%~1」の違いがわからないこのサイトにhttp://ykr414.com/ dos/bat.html%~1は「全ての引用句(")を削除して%1を展開する。」とありますが...
- ■shift [/シフト開始番号]・・shiftは、バッチファイル中の置き換え可能なパラメータの位置を、1つずつ変更する制御コマンド。10個以上のパラメータを処理したいときは、shiftコマンドを使用する。
-----------------------------------------------
/シフト開始番号
コマンドの拡張機能が有効である時に指定できる0~8の整数。
パラメータのシフトが起こる番号を指定。
例えば「/3」とすると、「%3」以降のパラメータがシフトされるが、「%0~2」はシフトされない。 - ■日付・時刻の表示[time /t]
[date /t]
# Win2K3/2k/XPであればecho %time%
echo %date%