バッチファイルで、リムーバルディスクを認知させ特定の拡張子のファイルを探す方法

こちらはOKWaveで回答済みの質問

質問者:masa616 バッチファイルで、リムーバルディスクを認知させ特定の拡張子のファイルを探す方法
困り度:すぐに回答を!

質問です。
コマンドプロンプトを利用したバッチファイルの記載の方法で、「リムーバルディスク内の特定の拡張子(例:.exeファイル)を探し出し、発見されればそのファイルをテキストの書き出し、なければ発見されませんでしたとテキストに書き出す方法を探しています。
対象とするOSはWindowsXPです。
また、複数のリムーバルディスク(USBメモリが2つ接続されている場合など)へも対応させたいです。
皆さんのお力をお借りしたいと思っております。
よろしくお願いします。

http://okwave.jp/qa4487725.html

リムーバブルディスクの一覧ってどうやって取得するんだろうと疑問に思いながら、googleに聞いてみた。
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%E3%83%AA%E3%83%A0%E3%83%BC%E3%83%90%E3%83%96%E3%83%AB%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF+%E8%A1%A8%E7%A4%BA&num=50

ざっと見てあたりをつけたページがこれ。
リムーバブルディスクの種類を表示したい --Access Club VBA Tips ...

リムーバブルディスクについては
そのドライブが3.5FDなのかそれ以外のリムーバブルディスクなのか
また、CD-ROMについてはCD-ROMなのかDVD-ROMなのか識別できません。
つまり、マイコンピュータで識別している程度の種類でいいので
リムーバブルディスクとCD-ROMについてFDやDVDの識別ができるように
するにはどうしたらいいのでしょうか?
マイコンピュータで表示できる以上、API等でもっていると思うのですが・・
APIのロジックでもかまわないので、教えてもらえないでしょうか?
(中略)

WMIのWin32_LogicalDiskクラスを参照してみるとか。

WMIといえばwmicというコマンドラインのコマンドがあったはず。それで wmic /? とやるとあったあった。wmic logicaldisk でディスクのかなりの情報が表示される。
ということで作ったのが下記のバッチ。
以下の例は、 exeファイルとtxtファイルを調べるサンプルで、検索結果はバッチファイルと同じ場所に list.txt として出力されます。

:---------------------------------------------------- sample.bat
echo off
type NUL>list.txt
for /F "tokens=1" %%d in ('wmic logicaldisk ^| find "リムーバブル"') do dir %%d>NUL 2>&1&&call :sub %%d
for %%x in (list.txt) do if %%~zx EQU 0 echo リムーバブルディスクが見つかりませんでした>list.txt
more list.txt
exit /b

:sub
type NUL>tmp.txt
for /R %1\ %%f in ( *.exe *.txt ) do echo %%f>>tmp.txt
for %%x in (tmp.txt) do if %%~zx EQU 0 echo %1では発見されませんでした>tmp.txt
copy /a list.txt+tmp.txt list.txt>NUL
del tmp.txt
goto :EOF

最初に作成したバージョンでは、3行目のfor文でそのまま do call :sub %%d とやっていましたがカードリーダなどが存在してメディアが無くてもドライブが割り当てられていると、メディアが入っていないエラーダイアログが出てしまうことに気がつきました。回避方法があったよなぁと古い記憶をたどって、dir %%d>NUL 2>&1&&call 〜 と記述することを思い出しました。