カレントディレクトリ以下のファイル一覧を出力する

image

動作イメージ

私的な用事でカレントディレクトリ以下のすべてのファイルを一覧するツールが必要になりました。コマンドプロンプトでDIR /B/A-D/Sを使えばファイル一覧は取得できるのですが、このコマンドの結果にはディレクトリ名が混ざっています。今回の用事ではディレクトリ名が邪魔になるので、さっきのコマンドの結果からディレクトリ名を除去してファイルに出力するWindowsのバッチを作成してみました。ファイル名やディレクトリ名に空白が入っていても動作します。

※このバッチにより発生した損害は一切責任を負いかねます。くれぐれも自己責任でお願いします。

filelist.batをファイルを取得したいディレクトリに置いて実行するだけです。この時filelist.txtというファイルが同じ階層にあれば削除されますので注意してください。

このバッチファイルは、DIR /B/A-D/Sの結果をFORで回し、:SUB_STR_CUT_AND_WRITE_FILEサブルーチンに渡しています。:SUB_STR_CUT_AND_WRITE_FILE “ファイル名”という引数を渡すのですが、:SUB_STR_CUT_AND_WRITE_FILEで引数を受け取った際にダブルクォートが入っていると文字列の切り出しがうまく行かなくなるので切り出し処理の前にダブルクォートを除去する処理を入れてあります。

とりあえず作ってはみたものの動作速度がすさまじく遅く、思ったよりも使い物にならないので後で作り変える予定です。バッチファイルではあまりFORを多様しない方が良さそうですね。

※追記
そんな大掛かりな事をしなくても実現できる事に気づき、バッチファイルを大幅に書き換えました。結果大変高速に動作し、バッチの行数もだいぶ短くなりました。また初版はちゃんとファイルを一覧できていませんでした。それも改善されています。

※バッチファイルの利用は自己責任でお願いします。

参考にしたURL
文字列の部分文字列を取得するサブルーチン
http://d.hatena.ne.jp/IIJIMAS/20101005/1286289954

BATファイルで文字列の切り出し
http://www.upken.jp/kb/kZwpzAqblKfZDjtMXuWuwioeExKNdE.html

http://textfile01.blog111.fc2.com/blog-category-5.html
http://okwave.jp/qa/q3893637.html
http://0xc000013a.blog96.fc2.com/blog-entry-162.html
http://d.hatena.ne.jp/iroiro123/20121223/1356230875