ホーム > 繰り返し処理をする

バッチファイルで繰り返し処理をするには for を使います。

  1. 指定した文字列を繰り返します
  2. [バッチファイル]
    for %%i in (ビーフ ポーク チキン) do (
    echo %%i
    )

    --- 実行結果 ---
    ビーフ
    ポーク
    チキン
    (お肉がいろいろ出力されました。 echo の代わりに curry.exe を使えば美味しいカレーができそうです)

  3. フォルダ内のテキストファイルを対象として繰り返します
  4. [バッチファイル]
    for %%i in (*.txt) do (
    echo %%i
    )

    --- 実行結果 ---
    野菜の炒め方.txt
    お肉の焼き方.txt
    お酒の作り方.txt
    (今日のディナーはうまくいきそうです)

  5. 指定したフォルダ内のテキストファイルを対象として繰り返します
  6. [バッチファイル]
    for /f "usebackq" %%i in (`dir /b c:\tips\*.txt`) do (
    echo %%i
    )

    --- 実行結果 ---
    過去へ行き方.txt
    未来への行き方.txt
    (時間旅行はうまくいきそうです)

  7. 同じ階層にあるフォルダに対して同じ処理を繰り返します
  8. [バッチファイル]
    for /f "usebackq" %%i in (`dir /b /ad`) do (
    cd %%i
    type 人生.txt
    cd ..
    )

    --- 実行結果 ---
    楽あり
    苦あり
    大往生

    以下で使用する frults.txt はこんな感じになっています。

    C:\TIPS>type fruits.txt
    apple,10,りんご
    banana,20,バナナ
    orange,30,オレンジ
    kiwi,40,キウイ
    mango,50,マンゴー

  9. テキストファイルの文字を1行ずつ対象として繰り返します
  10. [バッチファイル]
    for /f %%i in (fruits.txt) do (
    echo %%i
    )

    --- 実行結果 ---
    apple,10,りんご
    banana,20,バナナ
    orange,30,オレンジ
    kiwi,40,キウイ
    mango,50,マンゴー

  11. テキストファイルの文字を1行ずつ対象として繰り返します(先頭がaのもの以外)
  12. [バッチファイル]
    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=# なんていう使い方が便利そうです)

  13. テキストファイルの文字を1行ずつ対象として繰り返します(先頭の3行を飛ばす)
  14. [バッチファイル]
    REM skip で対象から外したい行数を指定します
    for /f "skip=3 delims=" %%i in (fruits.txt) do (
    echo %%i
    )

    --- 実行結果 ---
    kiwi,40,キウイ
    mango,50,マンゴー
    (先頭の3行は出力されません)

  15. テキストファイルの文字を1行ずつ指定した文字で切り取り繰り返します
  16. [バッチファイル]
    REM delims で区切りたい文字を指定します(ここでは "," )
    REM 入力データが " " で区切られている場合は "delims= " とします
    REM 入力データが " " または "," で区切られている場合は "delims=, " とします
    for /f "delims=," %%i in (fruits.txt) do (
    echo %%i
    )

    --- 実行結果 ---
    apple
    banana
    orange
    kiwi
    mango
    (1列目にある果物の名前だけが出力されました)

  17. テキストファイルの文字を1行ずつ2列目を対象として繰り返します
  18. [バッチファイル]
    REM tokens で列の番号を指定します
    REM スペースやタブで区切られたもの(またはdelimsで区切られたもの)をトークンと呼びます
    for /f "tokens=2 delims=," %%i in (fruits.txt) do (
    echo %%i
    )

    --- 実行結果 ---
    10
    20
    30
    40
    50
    (2列目の値が出力されました)

  19. テキストファイルの文字を1行ずつ1列目と3列目を対象として繰り返します
  20. [バッチファイル]
    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列目の値が出力されました)

  21. 数値を順番に繰り返します
  22. [バッチファイル]
    REM カッコ内は開始値,増分,終了値
    for /l %%i in (3,1,5) do (
    echo %%i
    )

    --- 実行結果 ---
    3
    4
    5

確認したOS: Windows 10

↑ PAGE TOP