概要

このページは、Windowsのバッチファイルのfor文でファイルまたはフォルダー名の検索について記述します。
指定フォルダー内のファイル名・フォルダー名の検索およびサブフォルダー内も含めて検索することができます。
コマンドの記述方法は以下の通りです。
対象コマンドの書式
ファイル名の一覧for %%変数名 in (検索対象フォルダー名) do コマンド
フォルダー名の一覧for /d %%変数名 in (検索対象フォルダー名) do コマンド
サブフォルダーも含めてファイルの一覧for /r 検索対象フォルダー名 %%変数名 in (検索するファイル名) do コマンド
サブフォルダーも含めてフォルダー名の一覧for /d /r 検索対象フォルダー名 %%変数名 in (検索対象フォルダー名) do コマンド
変数名は英字で1文字でなければなりません。
/d /rは大文字・小文字どちらでも構いません。

動作環境

以下の環境で動作を確認しました。
Windows 8.1 Enterprise 64bit
Windows 7 EnterPrise Service Pack 1 64bit
Windows XP Professional Service Pack 3 32bit
Windows 2000 Professional Service Pack 4

ファイル名の一覧を取得

for %%変数名 in (検索対象ファイル名) do echo %%変数名
カレントフォルダーのファイル名をfor文により順番に変数Aに代入し、ファイル名とサイズ、属性を表示します。

カレントフォルダーの状況

 ドライブ D のボリューム ラベルは 12345 です
 ボリューム シリアル番号は 1234-5678 です

 D:¥bat¥for_files のディレクトリ

2016/01/11  20:26    <DIR>          .
2016/01/11  20:26    <DIR>          ..
2016/01/11  20:04                97 1.bat
2016/01/11  20:04               104 2.bat
2016/01/11  20:13               181 3.bat
2016/01/05  21:42                72 4.bat
2016/01/11  20:01    <DIR>          tess
2016/01/11  20:00    <DIR>          test1
2016/01/11  20:00    <DIR>          test2

バッチファイル d:¥bat¥for_files¥1.bat

@echo off
rem ファイル名の一覧を取得

for %%A in (*.*) do (
	echo %%A %%~zA %%~aA
)
pause

出力結果

D:¥bat¥for_files>1
1.bat 97 --a------
2.bat 104 --a------
3.bat 181 --a------
4.bat 72 --a------
続行するには何かキーを押してください . . .

フォルダー名の一覧を取得

for /d %%変数名 in (検索対象フォルダー名) do echo %%変数名
ファイル名の一覧の取得に/Dオプションをつけるとフォルダー名を検索ができます。
カレントフォルダーで先頭にtestが含まれるフォルダー名を順番に変数Aに代入し、ファイル名とサイズ、属性を表示します。

カレントフォルダーの状況

 ドライブ D のボリューム ラベルは 12345 です
 ボリューム シリアル番号は 1234-5678 です

 D:¥bat¥for_files のディレクトリ

2016/01/11  20:26    <DIR>          .
2016/01/11  20:26    <DIR>          ..
2016/01/11  20:04                97 1.bat
2016/01/11  20:04               104 2.bat
2016/01/11  20:13               181 3.bat
2016/01/05  21:42                72 4.bat
2016/01/11  20:01    <DIR>          tess
2016/01/11  20:00    <DIR>          test1
2016/01/11  20:00    <DIR>          test2

バッチファイル d:¥bat¥for_files¥2.bat

@@echo off
rem フォルダー名の一覧を取得

for /D %%A in (test*) do (
	echo %%A %%~zA %%~aA
)
pause

出力結果

D:¥bat¥for_files>2
test1 0 d--------
test2 0 d--------
続行するには何かキーを押してください . . .

フォルダーの中からサブフォルダーも含めてファイルの一覧を取得

for /r 検索対象フォルダー名 %%変数名 in (検索するファイル名) do echo %%変数名
環境変数ProgramFilesで示されるフォルダーよりサブフォルダーも含めてMSVCR*.DLLをfor文により順番に変数Aに代入し、ファイル名とサイズ、属性を表示します。

バッチファイル d:¥bat¥for_files¥3.bat

@echo off
rem 環境変数ProgramFilesで示されるフォルダーよりサブフォルダーも含めてMSVCR*.DLLを検索する

for /r "%ProgramFiles%" %%A in (MSVCR*.DLL) do echo %%A %%~zA %%~aA
pause

出力結果

C:¥Program Files¥Common Files¥Microsoft Shared¥IME14¥SHARED¥MSVCR90.DLL 626688 --a------
C:¥Program Files¥Common Files¥Microsoft Shared¥VSTO¥10.0¥msvcr90.dll 626688 --a------
C:¥Program Files¥Intel¥iCLS Client¥msvcr90.dll 641360 --a------
C:¥Program Files¥Intel¥Intel(R) Rapid Storage Technology¥Microsoft.VC90.CRT¥msvcr90.dll 655872 --a------
C:¥Program Files¥Logicool¥SetPointP¥msvcr110.dll 828872 --a------
C:¥Program Files¥Microsoft SQL Server Compact Edition¥v4.0¥Private¥amd64¥Microsoft.VC90.CRT¥msvcr90.dll 624448 --a------
C:¥Program Files¥Microsoft SQL Server Compact Edition¥v4.0¥Private¥x86¥Microsoft.VC90.CRT¥msvcr90.dll 653120 --a------
C:¥Program Files¥Oracle¥VirtualBox¥msvcr100.dll 836256 --a------
C:¥Program Files¥Oracle¥VirtualBox¥x86¥msvcr100.dll 836256 --a------
C:¥Program Files¥Trend Micro¥AMSP¥msvcr110.dll 849360 --a------
C:¥Program Files¥Trend Micro¥Titanium¥plugin¥Pt¥msvcr110.dll 849360 --a------
C:¥Program Files¥Trend Micro¥Titanium¥plugin¥Pt¥win32¥msvcr110.dll 875472 --a------
続行するには何かキーを押してください . . . 

フォルダーの中からサブフォルダーも含めてフォルダー名を取得

for /d /r 検索対象フォルダー名 %%変数名 in (検索対象フォルダー名) do echo %%変数名
環境変数ProgramFilesで示されるフォルダーの中からサブフォルダーも含めてlibという名称のフォルダーを検索する。

バッチファイル d:¥bat¥for_files¥4.bat

@echo off
for /d /r "%ProgramFiles%" %%A in (lib) do echo %%A 
pause

出力結果

C:¥Program Files¥lib 
C:¥Program Files¥Common Files¥Microsoft Shared¥lib 
C:¥Program Files¥Common Files¥Microsoft Shared¥DW¥lib 
C:¥Program Files¥Common Files¥Microsoft Shared¥Filters¥lib 
C:¥Program Files¥Common Files¥Microsoft Shared¥IME14¥lib 
C:¥Program Files¥Common Files¥Microsoft Shared¥IME14¥IMEJP¥lib 
C:¥Program Files¥Common Files¥Microsoft Shared¥IME14¥SHARED¥lib 
C:¥Program Files¥Common Files¥Microsoft Shared¥ink¥lib 
C:¥Program Files¥Common Files¥Microsoft Shared¥ink¥ar-SA¥lib 
C:¥Program Files¥Common Files¥System¥lib 
C:¥Program Files¥Common Files¥System¥ado¥lib 
C:¥Program Files¥Common Files¥System¥ado¥ja-JP¥lib 
C:¥Program Files¥Common Files¥System¥ja-JP¥lib 
C:¥Program Files¥Common Files¥System¥msadc¥lib 
C:¥Program Files¥Common Files¥System¥msadc¥ja-JP¥lib 
C:¥Program Files¥Common Files¥System¥Ole DB¥lib 
C:¥Program Files¥Common Files¥System¥Ole DB¥ja-JP¥lib 

続行するには何かキーを押してください . . .