一部のバッチファイルでは、SHIFTステートメントが役立つ場合があります。

SHIFTが行うことは、コマンドラインパラメータを右から左にシフトすることです。

(コマンドラインパラメーターは、バッチファイルの実行に使用されるコマンドラインに含まれるパラメーターです。)これにより、たとえば、バッチファイルに可変数のパラメーターを受け入れさせる1つの方法が提供されます。

内部的には、コマンドインタープリターはコマンドラインの要素に番号を付けます。たとえば、DOIT.BATという名前のバッチファイルを実行する次のコマンドについて考えてみます。

doit first second third fourth fifth

この例では、コマンドは「doit」であり、その後に5つのパラメーター(1番目、2番目、3番目、4番目、5番目)が続きます。コマンドインタープリターは、内部的に、これらのパラメーターに%1から%5までの番号を付けます。ただし、実際には、%0という番号の「パラメーター」があります。コマンド(バッチファイル名)自体です。

これがどのように機能するかを確認するには、次のコマンドを含む独自のDOIT.BATファイルを作成します。

@ECHO OFF CLS :TOP IF [%0]==[] GOTO :EOF ECHO %0 %1 %2 %3 %4 %5 SHIFT GOTO TOP

バッチファイルは、最初に画面へのコマンドのエコーをオフにし、次に画面をクリアします。次に、コマンドラインの要素を画面にエコーし(SHIFTコマンドを使用して)すべての要素を左にシフトするコマンドのループ(:TOPからファイルの終わりまで)を設定します。シフト後、要素%0は破棄され、要素%1は%0になり、要素%2は%1になります。バッチファイルを実行すると、次の出力が表示されます。

doit first second third fourth fifth first second third fourth fifth second third fourth fifth third fourth fifth fourth fifth fifth

独自のバッチファイルでSHIFTを使用する場合、可変数のパラメーターを使用してファイルを呼び出し、それらのパラメーターをシフトして処理を行うことができます。

このヒント(13198)は、Windows 7、8、および10に適用されます。