Batch-script-using-shift-operator

提供:Dev Guides
移動先:案内検索

バッチスクリプト-SHIFT演算子の使用

コマンドライン引数の制限の1つは、%9までの引数のみを受け入れることができることです。 この制限の例を見てみましょう。

@echo off
echo %1
echo %2
echo %3
echo %4
echo %5
echo %6
echo %7
echo %8
echo %9
echo %10

出力

上記のコードがtest.batというファイルに保存され、ファイルが次のように実行される場合

test.bat a b c d e f g h i j

次に、出力が表示されます。

a
b
c
d
e
f
h
i
a0

上記の出力からわかるように、「j」として表示されるべき最終値はa0として表示されています。 これは、%10と呼ばれるパラメーターがないためです。

この制限は、SHIFT演算子を使用して回避できます。 バッチファイルが最初のパラメーターを処理した後、それらをSHIFTし(SHIFTコマンドのみで行を挿入するだけ)、%1が値Bを取得し、%2が値Cを取得するなど、%9まで、値Jを取得します 少なくとも%9が空になるまで、このプロセスを続けます。

SHIFT演算子を使用してコマンドライン引数の制限を克服する方法の例を見てみましょう。

@ECHO OFF
:Loop

IF "%1"=="" GOTO Continue
   echo %1%
SHIFT
GOTO Loop
:Continue

上記のコードがtest.batというファイルに保存され、ファイルが次のように実行される場合

test.bat a b c d e f g h i j

次に、出力が表示されます。

a
b
c
d
e
f
h
i
j

Note

コマンドラインの一部の文字は、DOSバージョン、「エスケープ」されているかどうか、および多くの場合コマンドラインでの位置に応じて、バッチファイルによって無視されます-

  • コンマ( "、")は、二重引用符で囲まれた文字列の一部でない限り、スペースに置き換えられます。
  • セミコロン( ";")は、二重引用符で囲まれた文字列の一部でない限り、スペースに置き換えられます。
  • "="文字は、二重引用符で囲まれた文字列の一部ではなく、スペースで置き換えられる場合があります。
  • 最初のスラッシュ( "/")は、コマンドの直後にスペースがない場合にのみスペースに置き換えられます。
  • 複数のスペースは、二重引用符で囲まれた文字列の一部でない限り、単一のスペースに置き換えられます。
  • タブは単一のスペースに置き換えられます。
  • 最初のコマンドライン引数の前のスペースは無視されます。
  • 最後のコマンドライン引数の後のスペースは削除されます。