[コマンドプロンプト] 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.txt
はold_file1.txt
に、file2.txt
はold_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
コマンドの強力な機能を活用し、ファイル操作を効率的に行うことができます。
よくある質問
まとめ
この記事では、Windowsのコマンドプロンプトにおけるfor
コマンドの使い方について、基本的な構文から応用例まで幅広く解説しました。
特に、ファイルやディレクトリに対するループ処理、数値範囲や文字列リストの処理、さらにはファイルの内容に対する操作方法について具体的な例を挙げて説明しました。
これを機に、実際の業務や日常のタスクにfor
コマンドを活用し、効率的なファイル管理やデータ処理を行ってみてはいかがでしょうか。