[コマンドプロンプト] forコマンドの使い方 – ループ処理の実装

コマンドプロンプトのforコマンドは、ループ処理を実装するために使用されます。

ファイルやディレクトリの一覧、数値の範囲、文字列のリストなどに対して繰り返し処理を行うことができます。

基本的な構文はfor %変数 in (リスト) do コマンドです。

バッチファイル内では%%%に変更します。

例えば、for %i in (*.txt) do echo %iは、カレントディレクトリ内のすべての.txtファイル名を表示します。

この記事でわかること
  • forコマンドの基本的な使い方
  • ファイルやディレクトリのループ処理
  • 数値や文字列の処理方法
  • ファイル内容に対する操作手法
  • 応用例を通じた実践的な活用法

目次から探す

forコマンドとは

forコマンドは、Windowsのコマンドプロンプトにおいて、指定した条件に基づいて繰り返し処理を行うためのコマンドです。

ファイルやディレクトリの操作、数値のループ処理、文字列の処理など、さまざまな用途に利用されます。

forコマンドの基本的な役割

  • 繰り返し処理を実行する
  • ファイルやディレクトリの操作を簡素化する
  • 数値や文字列のリストを処理する

forコマンドの基本構文

forコマンドの基本構文は以下の通りです。

for %%変数 in (リスト) do コマンド
  • %%変数:ループ内で使用する変数名
  • リスト:処理対象のファイルや数値のリスト
  • コマンド:ループ内で実行するコマンド

例えば、特定のファイルを処理する場合は次のように記述します。

for %%f in (*.txt) do echo %%f

このコマンドは、カレントディレクトリ内のすべての.txtファイルの名前を表示します。

file1.txt
file2.txt
file3.txt

コマンドプロンプトでの変数の扱い

コマンドプロンプトでは、forコマンド内で使用する変数は%%で始まります。

バッチファイル内で使用する場合は%を1つだけ使用します。

変数は、ループの各イテレーションで異なる値を持ち、処理を動的に行うことができます。

for /L %%i in (1,1,5) do echo %%i

このコマンドは、1から5までの数値を表示します。

1
2
3
4
5

ファイルやディレクトリに対するループ処理

forコマンドを使用することで、ファイルやディレクトリに対するループ処理を簡単に実行できます。

これにより、特定の条件に基づいてファイルやディレクトリを効率的に操作することが可能です。

ファイル一覧に対するループ処理

特定のディレクトリ内のファイルを一覧表示するには、forコマンドを使用します。

以下のコマンドは、カレントディレクトリ内のすべてのファイルを表示します。

for %%f in (*) do echo %%f
file1.txt
file2.docx
image.png

ディレクトリ一覧に対するループ処理

ディレクトリ内のサブディレクトリを一覧表示するには、次のように記述します。

for /D %%d in (*) do echo %%d

このコマンドは、カレントディレクトリ内のすべてのサブディレクトリを表示します。

Documents
Pictures
Downloads

拡張子を指定したファイルの処理

特定の拡張子を持つファイルのみを処理する場合、次のように記述します。

for %%f in (*.jpg) do echo %%f

このコマンドは、カレントディレクトリ内のすべての.jpgファイルを表示します。

photo1.jpg
photo2.jpg

サブディレクトリを含めたファイル処理

サブディレクトリ内のファイルも含めて処理するには、/Rオプションを使用します。

以下のコマンドは、カレントディレクトリとそのサブディレクトリ内のすべての.txtファイルを表示します。

for /R %%f in (*.txt) do echo %%f
C:\Users\User\Documents\file1.txt
C:\Users\User\Downloads\file2.txt

このように、forコマンドを活用することで、ファイルやディレクトリに対するループ処理を効率的に行うことができます。

数値範囲に対するループ処理

forコマンドを使用すると、数値の範囲に対するループ処理を簡単に実行できます。

これにより、特定の数値を使った計算や処理を効率的に行うことが可能です。

数値範囲の指定方法

数値範囲を指定するには、/Lオプションを使用します。

基本的な構文は以下の通りです。

for /L %%i in (開始値, 増分, 終了値) do コマンド

例えば、1から5までの数値を表示する場合は次のように記述します。

for /L %%i in (1,1,5) do echo %%i
1
2
3
4
5

ステップ値を指定したループ

数値の増分を変更することも可能です。

例えば、1から10までの偶数を表示する場合は、次のように記述します。

for /L %%i in (2,2,10) do echo %%i

このコマンドは、2から10までの偶数を表示します。

2
4
6
8
10

数値範囲を使った簡単な計算処理

数値範囲を使って簡単な計算を行うこともできます。

例えば、1から5までの数値の合計を計算する場合は、次のように記述します。

set /a sum=0
for /L %%i in (1,1,5) do (
    set /a sum+=%%i
)
echo 合計は %sum% です。

このコマンドは、1から5までの合計を計算し、結果を表示します。

合計は 15 です。

このように、forコマンドを使用することで、数値範囲に対するループ処理を簡単に実行し、さまざまな計算を行うことができます。

文字列リストに対するループ処理

forコマンドは、文字列リストに対するループ処理にも利用できます。

これにより、複数の文字列を効率的に処理することが可能です。

文字列リストの基本的な使い方

文字列リストを処理する基本的な方法は、forコマンドを使用して、カンマ区切りの文字列をループすることです。

以下の例では、いくつかの果物の名前を表示します。

for %%f in (りんご バナナ みかん) do echo %%f
りんご
バナナ
みかん

このように、forコマンドを使うことで、簡単に文字列リストを処理できます。

複数の文字列を処理する方法

複数の文字列を処理する場合、forコマンドを使って、各文字列に対して特定の操作を行うことができます。

例えば、各果物の名前を大文字に変換して表示する場合は、次のように記述します。

for %%f in (りんご バナナ みかん) do (
    set fruit=%%f
    call echo !fruit!
)
りんご
バナナ
みかん

この例では、callコマンドを使用して、遅延展開を利用しています。

文字列の分割とループ処理

文字列を特定の区切り文字で分割し、各部分を処理することも可能です。

以下の例では、カンマ区切りの文字列を分割して表示します。

set str=りんご,バナナ,みかん
for %%f in (%str%) do echo %%f
りんご
バナナ
みかん

このように、forコマンドを使用することで、文字列リストに対するループ処理を簡単に実行し、さまざまな操作を行うことができます。

ファイルの内容に対するループ処理

forコマンドを使用すると、ファイルの内容に対するループ処理を行うことができます。

これにより、ファイル内の各行を効率的に処理したり、特定の条件に基づいて行を操作したりすることが可能です。

ファイルの各行に対する処理

ファイルの各行を処理するには、forコマンドを使用してファイルを指定します。

以下の例では、sample.txtというファイルの各行を表示します。

for /F "delims=" %%l in (sample.txt) do echo %%l

このコマンドは、sample.txtの各行を読み込み、その内容を表示します。

1行目の内容
2行目の内容
3行目の内容

ファイルの内容を変数に格納して処理

ファイルの内容を変数に格納して処理することもできます。

以下の例では、各行の内容を変数に格納し、特定の操作を行います。

for /F "delims=" %%l in (sample.txt) do (
    set line=%%l
    echo 行の内容: !line!
)

このコマンドは、各行の内容をlineという変数に格納し、その内容を表示します。

遅延展開を使用するため、setlocal EnableDelayedExpansionを事前に追加する必要があります。

行の内容: 1行目の内容
行の内容: 2行目の内容
行の内容: 3行目の内容

特定の条件に基づく行の処理

特定の条件に基づいて行を処理することも可能です。

以下の例では、sample.txtの中から特定のキーワードを含む行のみを表示します。

for /F "delims=" %%l in (sample.txt) do (
    echo %%l | find "キーワード" >nul
    if not errorlevel 1 (
        echo %%l
    )
)

このコマンドは、sample.txtの各行を読み込み、”キーワード”を含む行のみを表示します。

キーワードを含む行の内容

このように、forコマンドを使用することで、ファイルの内容に対するループ処理を簡単に実行し、さまざまな操作を行うことができます。

応用例

forコマンドを活用することで、さまざまなファイル操作を効率的に行うことができます。

以下に、具体的な応用例をいくつか紹介します。

複数のファイルを一括でリネームする

特定のパターンに基づいて複数のファイルを一括でリネームすることができます。

以下の例では、すべての.txtファイルの名前をold_というプレフィックスを付けてリネームします。

for %%f in (*.txt) do (
    ren "%%f" "old_%%f"
)

このコマンドを実行すると、file1.txtold_file1.txtに、file2.txtold_file2.txtにリネームされます。

ファイルの内容を一括で置換する

特定の文字列を含むファイルの内容を一括で置換することも可能です。

以下の例では、すべての.txtファイル内の”古い文字列”を”新しい文字列”に置換します。

for %%f in (*.txt) do (
    powershell -Command "(Get-Content '%%f') -replace '古い文字列', '新しい文字列' | Set-Content '%%f'"
)

このコマンドは、各.txtファイルを読み込み、指定した文字列を置換して再度保存します。

特定の拡張子のファイルを一括削除する

特定の拡張子を持つファイルを一括で削除することもできます。

以下の例では、すべての.tmpファイルを削除します。

for %%f in (*.tmp) do (
    del "%%f"
)

このコマンドを実行すると、カレントディレクトリ内のすべての.tmpファイルが削除されます。

サブディレクトリ内のファイルを再帰的に処理する

サブディレクトリ内のファイルを再帰的に処理するには、/Rオプションを使用します。

以下の例では、すべてのサブディレクトリ内の.logファイルを表示します。

for /R %%f in (*.log) do (
    echo %%f
)

このコマンドは、カレントディレクトリとそのサブディレクトリ内のすべての.logファイルのパスを表示します。

これらの応用例を通じて、forコマンドの強力な機能を活用し、ファイル操作を効率的に行うことができます。

よくある質問

forコマンドで変数が正しく展開されないのはなぜ?

forコマンド内で使用する変数は、通常の変数展開とは異なり、%%で始まる形式で指定します。

また、バッチファイル内で変数を使用する際には、遅延展開を有効にする必要があります。

遅延展開を有効にするには、バッチファイルの先頭に以下のコマンドを追加します。

setlocal EnableDelayedExpansion

これにより、!変数名!の形式で変数を展開できるようになります。

例えば、forループ内で変数を使用する場合は、次のように記述します。

for %%i in (1 2 3) do (
    set var=%%i
    echo !var!
)

バッチファイル内でforコマンドを使う際の注意点は?

バッチファイル内でforコマンドを使用する際には、以下の点に注意が必要です。

  • 変数の展開%%を使用して変数を指定すること。

バッチファイル内では%を1つだけ使用します。

  • 遅延展開:変数の値をループ内で変更する場合は、遅延展開を有効にすること。
  • クォートの使用:ファイル名やパスにスペースが含まれる場合は、クォートで囲むこと。

これらの注意点を守ることで、forコマンドを正しく使用することができます。

forコマンドでサブディレクトリを含めて処理するには?

サブディレクトリを含めてファイルを処理するには、/Rオプションを使用します。

このオプションを指定することで、カレントディレクトリとそのすべてのサブディレクトリ内のファイルを対象にすることができます。

例えば、すべてのサブディレクトリ内の.txtファイルを表示する場合は、次のように記述します。

for /R %%f in (*.txt) do (
    echo %%f
)

このコマンドを実行すると、カレントディレクトリとそのサブディレクトリ内のすべての.txtファイルのパスが表示されます。

これにより、階層構造を持つディレクトリ内のファイルを効率的に処理することができます。

まとめ

この記事では、Windowsのコマンドプロンプトにおけるforコマンドの使い方について、基本的な構文から応用例まで幅広く解説しました。

特に、ファイルやディレクトリに対するループ処理、数値範囲や文字列リストの処理、さらにはファイルの内容に対する操作方法について具体的な例を挙げて説明しました。

これを機に、実際の業務や日常のタスクにforコマンドを活用し、効率的なファイル管理やデータ処理を行ってみてはいかがでしょうか。

当サイトはリンクフリーです。出典元を明記していただければ、ご自由に引用していただいて構いません。

関連カテゴリーから探す

  • コマンドプロンプト (92)
  • Bash (127)
  • URLをコピーしました!
目次から探す