![見出し画像](https://assets.st-note.com/production/uploads/images/125944016/rectangle_large_type_2_5250c17dcf514523647832aaca140a40.jpeg?width=1200)
ファイル名の一覧を出力するバッチ
これは架空の友人から聞いた話です。
その友人は、何らかの理由でPC内に大量の画像ファイルを持っています。
そして、小容量ファイルをたくさん持っているとディスクの断片化によりデータが破損したり読み書きが遅くなる、という神話を信じていたとします。
すると彼は必然的に画像ファイルをzipにまとめて保存しようと考えるわけですね。
ところがzip化してしまうとファイル番号を検索するのが難しいのです。
「あの画像のプロンプトなんだったっけ?」なんて後戻り作業が何度も発生する環境で暮らしていると、ファイルを探しにくいということは、それだけで致命傷になってしまいます。
(2GB以上のファイルを作りたくない事情があったとしたらzipアーカイブも複数に分割することになるので 尚更である)
アーカイブを順番に開いて宝探しをすることに喜びを感じる奇癖を持ってなければ、こんな事態は避けたいと思うでしょう。
そこで安直な解決手段として、アーカイブする前にファイルリストを作ってしまえばいいやと考えるようになるのですね。
そんなわけで、↓このコードをメモ帳にコピーして、List.bat とでも名前を付けて保存しておけば、良い感じにファイル一覧を記録しておけます。
@echo off
echo ファイル名一覧を出力します。
echo このバッチファイルを置いてあるディレクトリが検出対象です。
echo;
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=" %%a in ('dir /a-d /b /s *.png') do (
set hensu=%%a
echo !hensu:%~dp0=! >> list2.txt)
endlocal
echo 出力完了
echo;
@PAUSE
dirコマンドのオプション盛り盛りでpngファイルのパスだけ取り出します。
その結果を変数 %%a に格納しておいて、カレントディレクトリのパス %~dp0 を空文字で置換します。
こうすることで (サブディレクトリ)\(ファイル名) の相対パス一覧が出てきます。
絶対パスの一覧で構わんよ という場合なら、話はかなりシンプルになります。
dir /a-d /b /s *.png > list.txt
これだけで良い。
それにしても、1MBのテキストファイルってなかなか見る機会ないよね。
どうしてこんなことになってしまったんですか。
私と同じようなファイル管理をしている人がいれば役に立つかもしれません。
役に立たなくても怒らないでください。
手をついて詫びません。
![](https://assets.st-note.com/img/1703825724600-TYPmMDhucI.png?width=1200)
closed eyes, (crossed arms:1.1), (from side:0.8), これで万事OKだわ
pythonは嫌だpythonは嫌だpythonは嫌だpythonは嫌だpythonは嫌だpythonは嫌だpythonは嫌だpythonは嫌だpythonは嫌だpythonは嫌だpythonは嫌だpythonは嫌だ
よし。
落ち着いた。
それでは pythonを書く仕事に戻ります。