基本形
サンプル1
(出力値1 出力値2…)でループ
C:\Users\a\Desktop>
C:\Users\a\Desktop>type sample1.bat
@echo off
echo -----script start-----
echo.
for %%a in (1 2 3) do (
echo -----loop start-----
echo %%a回目
echo -----loop end-----
echo.
)
echo -----script end-----
pause
C:\Users\a\Desktop>
実行結果
出力値を順番に出力
C:\Users\a\Desktop>
C:\Users\a\Desktop>sample1.bat
-----script start-----
-----loop start-----
1回目
-----loop end-----
-----loop start-----
2回目
-----loop end-----
-----loop start-----
3回目
-----loop end-----
-----script end-----
続行するには何かキーを押してください . . .
C:\Users\a\Desktop>
/l
サンプル2
/l(開始値、増分値、終了値)でループ
C:\Users\a\Desktop>
C:\Users\a\Desktop>type sample2.bat
@echo off
echo -----script start-----
echo.
for /l %%a in (1,2,10) do (
echo -----loop start-----
echo %%a
echo -----loop end-----
echo.
)
echo -----script end-----
pause
C:\Users\a\Desktop>
実行結果
開始値から増分値ずつ加算して終了値まで出力
C:\Users\a\Desktop>
C:\Users\a\Desktop>sample2.bat
-----script start-----
-----loop start-----
1
-----loop end-----
-----loop start-----
3
-----loop end-----
-----loop start-----
5
-----loop end-----
-----loop start-----
7
-----loop end-----
-----loop start-----
9
-----loop end-----
-----script end-----
続行するには何かキーを押してください . . .
C:\Users\a\Desktop>
/f
/f (ファイル)
サンプル3
/f(ファイル)でループ
C:\Users\a\Desktop>
C:\Users\a\Desktop>type list.txt
a,aa,aaa,aaaa,aaaaa
b,bb,bbb,bbbb,bbbbb
c,cc,ccc,cccc,ccccc
d,dd,ddd,dddd,ddddd
e,ee,eee,eeee,eeeee
C:\Users\a\Desktop>
C:\Users\a\Desktop>type sample3.bat
@echo off
echo -----script start-----
echo.
for /f %%a in (list.txt) do (
echo -----loop start-----
echo %%a
echo -----loop end-----
echo.
)
echo -----script end-----
pause
C:\Users\a\Desktop>
実行結果
list.txtの中身を1行ずつ出力
C:\Users\a\Desktop>
C:\Users\a\Desktop>sample3.bat
-----script start-----
-----loop start-----
a,aa,aaa,aaaa,aaaaa
-----loop end-----
-----loop start-----
b,bb,bbb,bbbb,bbbbb
-----loop end-----
-----loop start-----
c,cc,ccc,cccc,ccccc
-----loop end-----
-----loop start-----
d,dd,ddd,dddd,ddddd
-----loop end-----
-----loop start-----
e,ee,eee,eeee,eeeee
-----loop end-----
-----script end-----
続行するには何かキーを押してください . . .
C:\Users\a\Desktop>
/f “tokens=文字列”
サンプル4
/f “tokens=x,y,m-n…” (“トークン1 トークン2…”)でループ
x番目とy番目とm番目からn番目…を表示
C:\Users\a\Desktop>
C:\Users\a\Desktop>type sample4.bat
@echo off
echo -----script start-----
echo.
for /f "tokens=1,2,4-5" %%a in ("a b c d e") do (
echo -----loop start-----
echo %%a
echo %%b
echo %%c
echo %%d
echo %%e
echo -----loop end-----
echo.
)
echo -----script end-----
pause
C:\Users\a\Desktop>
実行結果
tokensで指定した項目だけ出力
変数はtokenごとに定義する必要はない(今回なら%%aだけで良い)
余計に定義した変数(%e)はそのまま出力される
C:\Users\a\Desktop>
C:\Users\a\Desktop>sample4.bat
-----script start-----
-----loop start-----
a
b
d
e
%e
-----loop end-----
-----script end-----
続行するには何かキーを押してください . . .
C:\Users\a\Desktop>
/f “delimis=文字列”
サンプル5
/f “delims=区切り文字”でループ
(大抵複数項目扱うので、主にtokensと合わせて使用)
C:\Users\a\Desktop>
C:\Users\a\Desktop>type sample5.bat
@echo off
echo -----script start-----
echo.
for /f "delims=," %%a in ("1,2,3") do (
echo -----loop start----
echo %%a
echo %%b
echo -----loop end-----
echo.
)
echo -----script end-----
pause
C:\Users\a\Desktop>
実行結果
delimisで指定した文字で区切って出力
C:\Users\a\Desktop>
C:\Users\a\Desktop>sample5.bat
-----script start-----
-----loop start----
1
%b
-----loop end-----
-----script end-----
続行するには何かキーを押してください . . .
C:\Users\a\Desktop>
/f “tokens= delimis=” (ファイル)
サンプル6
/f “tokens=x,y,m-n… delims=区切り文字” (ファイル)でループ
C:\Users\a\Desktop>
C:\Users\a\Desktop>type list.txt
a,aa,aaa,aaaa,aaaaa
b,bb,bbb,bbbb,bbbbb
c,cc,ccc,cccc,ccccc
d,dd,ddd,dddd,ddddd
e,ee,eee,eeee,eeeee
C:\Users\a\Desktop>
C:\Users\a\Desktop>type sample6.bat
@echo off
echo -----script start-----
echo.
for /f "tokens=1,4-5,2 delims=," %%a in (list.txt) do (
echo -----loop start-----
echo %%a
echo %%b
echo %%c
echo %%d
echo %%e
echo -----loop end-----
echo.
)
echo -----script end-----
pause
C:\Users\a\Desktop>
実行結果
list.txtの中身を、delimisで指定した文字で区切って、tokensで指定した項目だけ出力
変数はtokenごとに定義する必要はない(今回なら%%aだけで良い)
余計に定義した変数(%e)はそのまま出力される
tokensで順番を入れ替えても、変数には順番通り格納される(%%a=1番目、%%b=2番目…)
C:\Users\a\Desktop>
C:\Users\a\Desktop>sample6.bat
-----script start-----
-----loop start-----
a
aa
aaaa
aaaaa
%e
-----loop end-----
-----loop start-----
b
bb
bbbb
bbbbb
%e
-----loop end-----
-----loop start-----
c
cc
cccc
ccccc
%e
-----loop end-----
-----loop start-----
d
dd
dddd
ddddd
%e
-----loop end-----
-----loop start-----
e
ee
eeee
eeeee
%e
-----loop end-----
-----script end-----
続行するには何かキーを押してください . . .
C:\Users\a\Desktop>
参考

対象
ファイルのセット内で、各ファイルに対して指定されたコマンドを実行する for コマンドに関する参照記事。

.bat(バッチファイル)のforコマンド解説。 - Qiita
先日投稿した.bat(バッチファイル)のifコマンド解説。 で予告した通り、forコマンドについても解説を行います。 forコマンドは、たまにバッチファイル中に出てきては見る人を混乱に陥れる…
コメント