Programming Field

Shift - DOS/コマンドプロンプト コマンド一覧

バッチプログラムにおいて、パラメーター「%0」~「%9」を一つずつ小さい方に番号をずらします(「%1」→「%0」、…、「%9」→「%8」、(使用不可の10番目の引数)→「%9」)。

構文

shift [/n]

オプション一覧

/n [Windows NT系] [拡張構文] n に 0 から 8 までの数値を指定することで、ずらす番号の開始番号を変えます。例えば「/2」を指定すると、「%0」と「%1」はそのままに、「%3」→「%2」、「%4」→「%3」、… とずらす処理を行います。

解説

Shift使用例

バッチプログラムでは通常引数に指定された値を「%1」~「%9」の9個までは利用することが出来ますが、10番目以降の引数はそのままでは利用できません。そこで一回Shiftコマンドを利用すると、値がずれて10番目の引数が「%9」に入ります。これを繰り返すことですべての引数の値を得ることが出来ます。

なお、一度ずらすと「%0」の値はもとの「%1」に書き換わってしまうため、もとの「%0」の値は失われてしまいます。「%0」の値が必要な場合は予め別の環境変数に取っておくなどが必要です。(逆方向にシフトさせることもできません。) [Windows NT系] [拡張構文] 「/1」とすれば、「%0」をそのままにすることができます。

サンプル (バッチファイル)

@echo off
set MYTEMP=
:check
if "%1"=="" goto final
set MYTEMP=%MYTEMP%%1,
shift
goto check
:final
echo %MYTEMP%
set MYTEMP=

バッチファイルに指定されたパラメーターを「,」でつなげて環境変数「MYTEMP」に設定するプログラムです。すべてつなげ終わったら「MYTEMP」の中身を出力して、「MYTEMP」を環境から削除しています。