ホーム > 繰り返し処理をする
バッチファイルで繰り返し処理をするには for を使います。
- 指定した文字列を繰り返します
- フォルダ内のテキストファイルを対象として繰り返します
- 指定したフォルダ内のテキストファイルを対象として繰り返します
- 同じ階層にあるフォルダに対して同じ処理を繰り返します
- テキストファイルの文字を1行ずつ対象として繰り返します
- テキストファイルの文字を1行ずつ対象として繰り返します(先頭がaのもの以外)
- テキストファイルの文字を1行ずつ対象として繰り返します(先頭の3行を飛ばす)
- テキストファイルの文字を1行ずつ指定した文字で切り取り繰り返します
- テキストファイルの文字を1行ずつ2列目を対象として繰り返します
- テキストファイルの文字を1行ずつ1列目と3列目を対象として繰り返します
- 数値を順番に繰り返します
[バッチファイル]
for %%i in (ビーフ ポーク チキン) do (
echo %%i
)
--- 実行結果 ---
ビーフ
ポーク
チキン
(お肉がいろいろ出力されました。 echo の代わりに curry.exe を使えば美味しいカレーができそうです)
[バッチファイル]
for %%i in (*.txt) do (
echo %%i
)
--- 実行結果 ---
野菜の炒め方.txt
お肉の焼き方.txt
お酒の作り方.txt
(今日のディナーはうまくいきそうです)
[バッチファイル]
for /f "usebackq" %%i in (`dir /b c:\tips\*.txt`) do (
echo %%i
)
--- 実行結果 ---
過去へ行き方.txt
未来への行き方.txt
(時間旅行はうまくいきそうです)
[バッチファイル]
for /f "usebackq" %%i in (`dir /b /ad`) do (
cd %%i
type 人生.txt
cd ..
)
--- 実行結果 ---
楽あり
苦あり
大往生
C:\TIPS>type fruits.txt
apple,10,りんご
banana,20,バナナ
orange,30,オレンジ
kiwi,40,キウイ
mango,50,マンゴー
[バッチファイル]
for /f %%i in (fruits.txt) do (
echo %%i
)
--- 実行結果 ---
apple,10,りんご
banana,20,バナナ
orange,30,オレンジ
kiwi,40,キウイ
mango,50,マンゴー
[バッチファイル]
REM eol で対象から外したい先頭の文字を指定します
for /f "eol=a delims=" %%i in (fruits.txt) do (
echo %%i
)
--- 実行結果 ---
banana,20,バナナ
orange,30,オレンジ
kiwi,40,キウイ
mango,50,マンゴー
(先頭が a から始まる apple の行は出力されません)
(対象から外したいものの先頭に";" や "#" をつけるというルールを設ければ,eol=; とか eol=# なんていう使い方が便利そうです)
[バッチファイル]
REM skip で対象から外したい行数を指定します
for /f "skip=3 delims=" %%i in (fruits.txt) do (
echo %%i
)
--- 実行結果 ---
kiwi,40,キウイ
mango,50,マンゴー
(先頭の3行は出力されません)
[バッチファイル]
REM delims で区切りたい文字を指定します(ここでは "," )
REM 入力データが " " で区切られている場合は "delims= " とします
REM 入力データが " " または "," で区切られている場合は "delims=, " とします
for /f "delims=," %%i in (fruits.txt) do (
echo %%i
)
--- 実行結果 ---
apple
banana
orange
kiwi
mango
(1列目にある果物の名前だけが出力されました)
[バッチファイル]
REM tokens で列の番号を指定します
REM スペースやタブで区切られたもの(またはdelimsで区切られたもの)をトークンと呼びます
for /f "tokens=2 delims=," %%i in (fruits.txt) do (
echo %%i
)
--- 実行結果 ---
10
20
30
40
50
(2列目の値が出力されました)
[バッチファイル]
REM 2つ目以降の変数は最初に指定した%%i の次の文字 %%j が設定されます(その次がある場合は %%k)
REM 連続したたくさんのトークンを指定したい場合は "tokens=1-5" とします
for /f "tokens=1,3 delims=," %%i in (fruits.txt) do (
echo %%i %%j
)
--- 実行結果 ---
apple,りんご
banana,バナナ
orange,オレンジ
kiwi,キウイ
mango,マンゴー
(1列目と3列目の値が出力されました)
[バッチファイル]
REM カッコ内は開始値,増分,終了値
for /l %%i in (3,1,5) do (
echo %%i
)
--- 実行結果 ---
3
4
5
確認したOS: Windows 10