バッチファイルで特定フォルダ配下のファイルを検索する方法です。
特定フォルダの中だけ検索
特定のフォルダ内だけ検索するには次のように書きます。
@echo off rem 対象ディレクトリに移動 pushd C:\Users\UserName\Desktop\Example rem 全てのファイルを取得 dir /b rem 完全一致するファイルを探す dir /b example.txt rem 前方一致するファイルを探す dir /b example.* rem 後方一致するファイルを探す dir /b *.txt rem 元のディレクトリに戻る popd
子フォルダの中身も検索
子フォルダの中身も再帰的に検索する場合は/s
を付けます。
@echo off pushd C:\Users\UserName\Desktop\Example rem 全ての子フォルダも含めて検索 dir /b /s rem 検索条件を複数指定してもOK dir /b /s *.txt * exe popd
結果をファイルに保存
結果をファイルに保存するには>
を使います。
@echo off pushd C:\Users\UserName\Desktop\Example rem ファイルに書き出す dir /b /s > file.txt popd
結果を編集したい場合はfor文を使う
結果を一つずつ取り出したい場合はfor
を使います。
一つずつ取り出せるので編集もできます。
@echo off pushd C:\Users\UserName\Desktop\Example rem %%aに.txtが入ってくる for %%a in (*.txt) do ( echo %%a ) rem /rで子フォルダまで対象にする for /r %%a in (*.txt) do ( echo %%a ) popd
for文の結果をファイルに保存
for
で取り出した結果を保存するには>>
を使います。
@echo off pushd C:\Users\UserName\Desktop\Example rem ファイルがあったら削除 if exist file.txt del file.txt rem 書き込む for /r %%a in (*.txt) do ( echo %%a >> file.txt rem ファイル名だけにする場合はこんな感じ echo %%~na >> file.txt ) popd