2011年1月16日日曜日

SHIFT = 引数(= %1など)の位置を1つずらす - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。プログラム実行関連
○Windows XP
次の時に指定された引数(= パラメーター)の位置を、1つ前にずらします。
o バッチファイルを呼び出す時に、後ろに引数を付けて呼び出す
o ラベルを呼び出す時に、後ろに引数を付けて呼び出す

次のような時に使うと便利です。
o 10番目以降の引数を使用したい時。(= コマンドプロンプトは、%9 までしか記述出来ません。)
o 全ての引数を、同じ論理で処理したい時。


**** 書式
--------
shift [/数字]
--------

o コマンド名は、大文字小文字のどちらでも大丈夫です。
o /数字 = ずらしたい引数の先頭を、「/ + 番号」の形で指定します。(/0から/8まで)
    + 例えば、/2 を指定すると、%3 以降の引数の位置が、1つ前にずれます。
    + %3の値が %2に移動し、%4の値が %3に移動します。そして、%0 と %1の値は変化しません。
o オプションを指定しない時、全ての引数が1つずれます。%1の値が %0に移動します。


**** 使用例
o オプションを使用しない時の例
--------
call ミクさんに挨拶.bat ネギ ミクさん ネギ ネギ
--------

-------- ミクさんに挨拶.bat
@echo off
echo おはようございます。%2
shift
echo 改めて、おはようございます。%1
--------


o オプションを使用した時の例
--------
call ミクさんとルカ様に挨拶.bat ミクさん リンちゃん レン君 ルカ様
--------

-------- ミクさんとルカ様に挨拶.bat
@echo off
echo %1、%4。おはようございます。
SHIFT /2
SHIFT /2
echo %1、%2。改めて、おはようございます。
--------



**** 機能
o バッチファイルやラベル呼び出しの時に指定された引数の位置を 1つ前にずらします。
o 何も指定しない時、 %1の値は %0に移動します。以降の引数も同様です。
o /数字の形で指定すると、「その数字」番目の引数以降を、ずらす対象とします。
    + /2を指定すると、%3の値は %2に移動します。%4以降も同様です。
    + そして、%0 と %1の値はそのまま残ります。


**** メモ
o オプションで指定する数字は、最初の1文字を採用しているみたいです。
    + /9 を指定すると、エラーメッセージが出ました。
    + /10 を指定すると、/1 と同じ結果になりました。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。プログラム実行関連▼ABC順
    ▼Windowsコマンド一覧▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > SORT = ファイルの内容やコマンド出力結果を並べ替えて表示する
    変数 %0 = 実行中のバッチファイル名、もしくはCALLラベル名
    変数 %1 = バッチファイルやCALL文の最初の引数
    +
    CALL = バッチファイルやラベルを呼び出す
    GOTO = 指定したラベルに移動する