ここではWindowsコマンドのfor文を使いこなすための実例集を紹介します。
目次
for文とは
for文は「繰り返し処理(ループ)」を行うための構文で、指定した回数・条件・対象に対して同じ処理を順番に実行する役割を持ちます。
構文
FOR (オプション) %%変数 IN (処理対象となる値) DO コマンド
オプションの種類
/D — ディレクトリ(フォルダ)を対象にします。
/R — 指定したディレクトリ以下を対象にします。
/L — 指定した数値(開始値, 増分, 終了値)でループします。
/F — ファイル内容・コマンド結果・文字列を行単位で処理します。
対象ファイルを検索して画面に表示する
このバッチは、C:\work フォルダ内にある拡張子が .txt と .log のファイルパスをコマンドプロンプト画面に一覧表示するバッチです。
@echo off
set "TARGET=C:\work"
for %%F in ("%TARGET%\*.txt" "%TARGET%\*.log") do (
echo %%~fF
)
PAUSE
【解説】
set “TARGET=C:\work”
→ TARGET という変数に、検索対象のフォルダを設定しています。
for %%F in (“%TARGET%*.txt” “%TARGET%*.log”) do (
→ C:\work の中から、拡張子 *.txt と *.log を探します。
%%F
→ 見つかったファイルを一時的に格納する変数です。
echo %%~fF
→ 見つかったファイルのパスを画面に表示します。
対象ファイルを検索してファイルに出力する
このバッチは、C:\work フォルダ内にある拡張子が .txt と .log のファイルパスの一覧を指定したファイルに出力するバッチです。
@echo off
set "TARGET=C:\work"
set "OUTPUT=C:\work\filelist.txt"
> "%OUTPUT%" (
for %%F in ("%TARGET%\*.txt" "%TARGET%\*.log") do (
echo %%~fF
)
)
echo 出力しました: %OUTPUT%
PAUSE
【解説】
set “TARGET=C:\work”
→ TARGET という変数に、検索対象のフォルダを設定しています。
set “OUTPUT=C:\work\filelist.txt”
→ OUTPUT という変数に、出力先を設定しています。
> “%OUTPUT%” (・・・)
→ 括弧内で実行される処理の出力をすべて %OUTPUT% に書き込みます。
対象フォルダを検索して画面に表示する
このバッチは、C:\work フォルダ内にあるすべてのサブフォルダのファイルパスをコマンドプロンプト画面に一覧表示するバッチです。
/D オプションを使用します。
@echo off
set "TARGET=C:\work"
for /D %%F in ("%TARGET%"\*) do (
echo %%~fF
)
PAUSE
サブフォルダ内も含めて対象ファイルを検索する
このバッチは、C:\work フォルダ内のサブフォルダも含めて拡張子が .csv のファイルパスをコマンドプロンプト画面に一覧表示するバッチです。
/R オプションを使用します。
@echo off
set "TARGET=C:\work"
for /R "%TARGET%" %%F in (*.csv) do (
echo %%~fF
)
PAUSE
1日~31日までのフォルダを一括作成する
このバッチは、C:\work フォルダ内の1日~31日までのフォルダを一括作成するバッチです。
/L オプションを使用します。
@echo off
set "TARGET=C:\work"
for /L %%i in (1,1,31) do (
mkdir "%TARGET%\%%i"
)
echo 1~31日のフォルダを作成しました。
PAUSE
指定したファイルの中身を画面に表示する
このバッチは、C:\work\filelist.txt を 1行ずつ読み込み、各行の内容をコマンドプロンプト画面に表示するバッチです。
/F オプションを使用します。
@echo off
for /F %%F in (C:\work\filelist.txt) do (
echo %%F
)
PAUSE
拡張子を指定してファイルを一括コピーする
このバッチは、C:\work フォルダ内にある拡張子が .csv のファイルを C:\backup フォルダに一括してコピーするバッチです。
@echo off
for %%F in (C:\work\*.csv) do (
copy "%%F" C:\backup\
)
PAUSE
拡張子を指定してファイルを一括変名する
このバッチは、C:\work フォルダ内にある拡張子が .txt のファイルの拡張子を .bak に一括して変名するバッチです。
@echo off
for %%F in (C:\work\*.txt) do (
ren "%%F" "%%~nF.bak"
)
PAUSE
以上、Windowsコマンドのfor文を使いこなすための実例集について解説しました。