コスパ重視で生きたい人生だった

なるべく楽して生きて行きたい30代サラリーマンのブログ

サブフォルダ内のファイル名一覧を取得するbatファイル


ファイル名の一覧が欲しい!
でも、フォルダが一杯あって、いちいち全部開くのはめんどう。
そんなとき、あると思います。


●サブフォルダ名一覧の取得

dirコマンドのオプション「/ad」を使用すると、フォルダ名だけ表示してくれます。
/bと組み合わせて、まずはサブフォルダの一覧を取得し、list.txtに書き込み。

C:\bbb>dir /b
allitem.php
bbb2
call_user_func.php
call_user_func2.php
extract.php
get_defined_function.php
jap_ allitem.php
rcvarray.php
rcvform.php
rcvform_array.php
rcvget.php
rcvisset.php
rcvpost.php

C:\bbb>dir /ad /b
bbb2

C:\bbb>dir /ad /b > list.txt



●forを使って、全てのサブフォルダのファイル一覧を取得

あとはこのlist.txtをforコマンドで読み込んで、dirでファイル名の一覧を取得していくだけ。
for /F %i in ( list.txt ) do dir /b %i >> filename.txt

C:\bbb>for /F %i in ( list.txt ) do dir /b %i >> filename.txt

C:\bbb>dir /b bbb2 1>>filename.txt

C:\bbb>type filename.txt
新規テキスト ドキュメント.txt



●応用してサブフォルダ内のファイル名一覧を取得するバッチファイルを作ってみた

こんな感じ。
バッチの中だと、%を重ねないといけないことを知らなくてちょっと苦労した。

@echo off
set /p TARGET_DIR="対象フォルダを入力してください >"
echo %TARGET_DIR% 内のサブフォルダ内のファイル名を一覧で出力します
pause

pushd %0\..
dir /ad /b "%TARGET_DIR%" > dir.txt
for /F %%i in ( dir.txt ) do dir /b "%TARGET_DIR%"\%%i >> list.txt
del dir.txt
pause
exit

出力するファイル名をフォルダ名毎に分けたいときは

for /F %%i in ( list.txt ) do dir /b "%TARGET_DIR%"\%%i >> %%i.txt

仕事がちょっと楽になった。
めでたしめでたし。


Windows コマンドプロンプト ポケットリファレンス

Windows コマンドプロンプト ポケットリファレンス