for %[変数名] in ([リスト]) do (
[コマンド]
..........
)
for /l %[変数名] in ([初期値],[増分],[終了値]) do (
[コマンド]
..........
)
for /f "[オプション]" %[変数名] in ([ファイルリスト]) do (
[コマンド]
..........
)
のように書くことも可能です。for %[変数名] in ([リスト]) do [コマンド]
for %[変数名] in ([リスト]) do ([コマンド])
for 文の局所変数 %[変数名] の変数名は アルファベット 1 文字であること、およびバッチファイル内で使うときは、 %[変数名] は %%[変数名] と % を重ねる必要があることに注意してください。 この局所変数は、値を参照するときも、 set /a の右辺に書く場合でも %[変数名] (バッチファイル内では %%[変数名]) として使用します。
上の 1. の形式の場合は、リストには複数の文字列を書くことができ、 それが各変数に代入されてその分だけコマンドが実行されます。 リストの各要素の区切りは、スペースかカンマ (,) が使用できます。 リストとしてワイルドカードを含む文字列を指定した場合は、 ワイルドカードにマッチするファイル名を探してそれをリストの要素とします (ワイルドカードについては 6 節参照)。 例えば
とすると、%a には順番に dog, cat, mouse という文字列が代入されて、 そのそれぞれに対してコマンド「echo %a」が実行されるので、 結果として
> for %a in (dog cat mouse) do echo %a
と表示されることになります。
dog
cat
mouse
2. の形式は、C 言語の for 文とは増分指定 (C では 3 つ目)、 終了条件 (C では 2 つ目) の指定の順番が違いますが、 ほぼ似た使い方ができます。 増分や整数値には負の値も使用できます。例えば、
とすると、%a には順に 9,7,5,3,1,-1,-3 が代入されて do の後ろのコマンドが実行されます。
> for /l %a in (9,-2,-4) do echo %a
3. の形式では、「"[オプション]"」は省略することもできますが、 その場合は指定したファイルの各行の、 タブや空白で区切られた第 1 フィールド (最初の単語) を %[変数名] に代入してコマンドを実行します。 第 2 フィールド以降を利用したり、 フィールドの区切り文字を指定したりもできますが14、 それらに対するオプションの指定方法、 および 1., 2., 3. 以外の for 文の形式については、 for /? によるヘルプを参照してください。
竹野茂治@新潟工科大学