Windowsコマンド虎の巻

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:条件に合致するファイルに対して処理を行う