FOR (オプション) [変数] IN (セット) DO (
処理1
処理2
...
)
バッチファイルでのfor文による繰り返し処理を紹介します。
バッチファイルで繰り返し処理をする場合は、for文を利用します。
FOR (オプション) [変数] IN (セット) DO (
処理1
処理2
...
)
1行で記述する場合は次の書式になります。
FOR (オプション) [変数] IN (セット) DO 処理
オプションは以下の値をとります。
オプション | 意味 |
---|---|
(指定しない) | ファイル名を対象 |
/D | ディレクトリ名(フォルダ名)を対象 |
/R | ディレクトリ名及びそのサブディレクトリ内のファイル名を対象 |
/L | 値を指定 |
/F | テキストファイル内の文章に対してトークンを取り出す |
変数 v
の値を1から1ずつ10まで増加させてループします。
@ECHO OFF
FOR /L %%v IN (1,1,10) DO (
ECHO 出力: %%v
)
バッチファイルを実行すると下図の結果となります。
10回ループ処理が実行されている動作が確認できます。
以下のバッチファイルを作成します。
@ECHO OFF
FOR %%n IN (*.txt) DO (
ECHO ファイル名: %%n
)
バッチファイルを実行した際のカレントディレクトリで、*.txt
ファイルにマッチするファイルに対してループ処理を実行します。
%%n
変数にはファイル名が代入されます。
FOR %%n IN (*.txt) DO (
ECHO ファイル名: %%n
)
ファイルを以下のディレクトリに配置します。バッチファイルと同じ位置に price.txt
stock.txt
puroduct.txt
の3つのテキストファイルを配置します。
バッチファイルを実行します。3つの*.txt
ファイルがありますので、ループは3回実行され、ファイル名がコンソールに出力されます。
以下のバッチファイルを作成します。
@ECHO OFF
FOR /D %%n IN (*) DO (
ECHO ディレクトリ名: %%n
)
/D
オプションを指定しましたので、条件に該当するディレクトリをループします。条件は *
としていますので、
カレントディレクトリのサブフォルダすべてに対してループ処理が実行されます。
FOR /D %%n IN (*) DO (
バッチファイルを配置したディレクトリにdir1
dir2
のサブディレクトリを作成します。
バッチファイルを実行します。下図の結果が表示されます。
ディレクトリごとにループが実行され、ディレクトリ名が表示されます。
以下のバッチファイルを作成します。
@ECHO OFF
FOR /R %%n IN (*) DO (
ECHO ファイル名: %%n
)
/R
オプションを指定しているので、サブディレクトリも含めディレクトリをループし該当するファイルを処理します。条件は *
としていますので、
サブフォルダを含めたすべてのファイルに対してループ処理が実行されます。
ファイルを以下のディレクトリに配置します。
バッチファイルと同じ位置に price.txt
stock.txt
puroduct.txt
の3つのテキストファイルを配置します。
dir1
dir2
のサブディレクトリを作成します。
dir1
ディレクトリにはdetails.txt
ファイルを配置します。
dir2
ディレクトリにはid.txt
ファイルを配置します。
バッチファイルを実行します。下図の結果が表示されます。
サブディレクトリも含めてファイルごとにループが実行され、ファイル名が表示されます。