for
forは、ループ処理を行うコマンドです。
解説
forは単独のコマンドとしては使用せず、バッチプログラムの中で使用します。
構文
- (構文)ファイルをループする
- FOR [オプション] %%変数 IN (対象ファイル or フォルダ) DO <実行コマンド>
- (構文)値をループする
- FOR /L %%変数 IN (開始値, 増分, 終了値) DO <実行コマンド>
- (構文)トークンをループする
- FOR /F "トークンオプション" %%i IN (処理の対象) DO コマンド
変数はアルファベット1文字で指定してください。
変数は大文字小文字は区別されます。
オプション | 説明 |
---|---|
/D | ディレクトリを処理対象とする |
/L | 値をループ処理する |
/R | サブディレクトリ内も再帰的に参照する |
/F トークンオプション | テキストファイルから取り出したトークンを処理対象とする tokens:使用するトークンを指定 delims:= トークンの区切り文字を指定 eol:指定した文字で始まる行を無視する skip:ファイルの先頭から無視する行数を指定する usebackq コマンドを実行した出力結果を対象にする |
/? | コマンドのヘルプを表示する |
サンプル
変数を10~12まで増分1でループする
(test1.bat)
@echo off
for /l %%i in (10,1,12) do (
echo %%i
)
(実行結果)
C:¥>test1.bat
10
11
12
カレントディレクトリ直下(サブディレクトリ内は含まない)にある拡張子が.txtのファイルのファイル名と内容を全件表示する
@echo off
for %%i in (*.txt) do (
echo 読込ファイル名:%%i
type %%i
)
絶対パスで指定したい場合は、「*.txt」の箇所を「C:¥test¥*.txt」のように記述できます。
カレントディレクトリ配下(サブディレクトリ内も含む)にある拡張子が.txtのファイルのファイル名と内容を全件表示する
@echo off
for /r %%i in (*.txt) do (
echo 読込ファイル名:%%i
type %%i
)
カレントディレクトリ内のディレクトリ名を表示する
@echo off
for /d /r %%i in (*) do (
echo 読込ディレクトリ名:%%i
)
C:¥test.txtファイルの中身を表示する
@echo off
setlocal
set fp=C:¥test.txt
for /f %%i in (%fp%) do (
echo %%i
)
コマンド「dir /b」の実行結果を1行づつ解析する
@echo off
for /f %%i in ('dir /b') do (
:結果を1行づつ解析
echo %%i
)
カンマ区切りの1,3,5番目を取り出す
(test.bat)
@echo off
for /f "tokens=1,3,5 delims=," %%i in (sample.txt) do (
echo %%i %%j %%k
)
(sample.txt)
01,02,03,04,05,06,07,08,09,10
11,12,13,14,15,16,17,18,19,20
21,22,23,24,25,26,27,28,29,30
(実行結果)
C:¥>test.bat
01 03 05
11 13 15
21 23 25
%%i以降の変数は i⇒j⇒k⇒l...といった感じで自動的に宣言されます
環境変数のパラメータの一覧を表示する
(test.bat)
@echo off
for /f "usebackq tokens=1 delims==" %%i in (`set`) do (
echo %%i
)
(実行結果)
C:¥>test.bat
ALLUSERSPROFILE
APPDATA
CommonProgramFiles
CommonProgramFiles(x86)
COMPUTERNAME
・
・
備考
- FOR文内のカウンタ変数は、以下のルールにご注意ください。
・変数定義時は%%を付ける
・変数名は英字1字
・大文字小文字は区別される - for構文内でよく使用される遅延環境変数については、以下ページをご覧ください。
⇒ setlocal 遅延環境変数
関連項目
- forfiles:条件に合致するファイルに対して処理を行う