• ベストアンサー

Batch: フォルダ内の特定のファイル以外を全て削除

こんにちは。 件名通りなのですが、フォルダ内のファイルや サブフォルダを特別な数個のファイルを残して全て削除したいのです。 残すファイルの拡張子は *.mdb です。 例を挙げると以下のような状態で、mdbファイル以外 全てのファイル、Bフォルダも全部消したいのです。 A--- 1.mdb   2.mdb aaa.txt  bbb.doc  ccc.html |----B(フォルダ) ddd.pdf  eee.xls 拡張子を指定すれば、と思ったのですが、どんな拡張子の ファイルが放り込まれているのかわかりません。 またフォルダもどんな名前のフォルダが作成されているか 予測できません。 全部消す & *.mdb を除く のような構文があればいいのですが 可能かどうか、可能であれば、教えていただけないでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

バッチファイルを作って実行します。 cd \A for /r %%F in (*) do if /i "%%~xF" neq ".mdb" del "%%F" for /r /d %%D in (*) do rd "%%D" はじめのfor文でファイルを全部リストアップして拡張子が .mdb 以外のものを削除します。 次のfor文でディレクトリを全部リストアップして rd で削除します。.mdb ファイルが残っており空ディレクトリでなければ削除されません。エラーメッセージがでますけど気にしなければいいです。メッセージがいやなら、 for /r /d %%D in (*) do rd "%%D" 2>NUL にすればいいです。 詳しくは、for /? や if /? 等を見てください。

ToshiJP
質問者

お礼

ありがとうございました。 教えていただいた構文を利用して無事に バッチを作成して処理することができました!

その他の回答 (1)

回答No.1

質問の内容から想像するに、Windowsの話ですよね。 手っ取り早い方法としては、リソースキットに含まれる"forfiles"という バッチ支援ツールを使うのが良いかと思います。 リソースキットをお持ちでなければ、類似品がダウンロードできます。

参考URL:
http://www.dynawell.com/reskit/microsoft/win2000/forfiles.zip

関連するQ&A