Windows バッチファイルの変数と引数

Facebooktwittermail

PowerShellに慣れようとしているのに、未だにWindowsバッチファイルで処理してしまう老眼SEです。

備忘録
バッチファイルで利用できる引数は%0から%9までだと思っていたのですが文法上の制限で、実際にはそれ以上利用できるのを知りました。

Windows Batch Scripting: Variables
http://steve-jansen.github.io/guides/windows-batch-scripting/part-2-variables.html

NOTE: DOS does support more than 9 command line arguments, however, you cannot directly read the 10th argument of higher. This is because the special variable syntax doesn’t recognize %10 or higher. In fact, the shell reads %10 as postfix the %0 command line argument with the string “0”. Use the SHIFT command to pop the first argument from the list of arguments, which “shifts” all arguments one place to the left. For example, the the second argument shifts from position %2 to %1, which then exposes the 10th argument as %9.

Windows 7(7601)で検証してみました。

  • サンプル1
  • 結果
    %10は%1と0が連結して表示されています。

  • サンプル2
  • 結果
    shiftコマンドで一つシフトして10番目の”I”が%9に入りました。

  • サンプル3
  • 結果
    sift /8 で%8からシフトします。

さてshiftするのに引数の個数を調べる必要があります。
Batch files – number of command line arguments
https://stackoverflow.com/questions/1291941/batch-files-number-of-command-line-arguments

なるほど%*ですべての引数が分かるのでforでカウントするんですね。

応用
for文で上手くいかなかったのでgotoで回してます。またshift /8が一つ余分な気がするのですが、削除すると結果がダメなんだすよね。

結果

こんなの利用することも無いと思いますが 😛



おまけ
参考サイト:Windowsバッチファイル変数
http://capm-network.com/?tag=Windowsバッチファイル変数

結果

Leave a Reply