- ベストアンサー
Batch: フォルダ内の特定のファイル以外を全て削除
こんにちは。 件名通りなのですが、フォルダ内のファイルや サブフォルダを特別な数個のファイルを残して全て削除したいのです。 残すファイルの拡張子は *.mdb です。 例を挙げると以下のような状態で、mdbファイル以外 全てのファイル、Bフォルダも全部消したいのです。 A--- 1.mdb 2.mdb aaa.txt bbb.doc ccc.html |----B(フォルダ) ddd.pdf eee.xls 拡張子を指定すれば、と思ったのですが、どんな拡張子の ファイルが放り込まれているのかわかりません。 またフォルダもどんな名前のフォルダが作成されているか 予測できません。 全部消す & *.mdb を除く のような構文があればいいのですが 可能かどうか、可能であれば、教えていただけないでしょうか? よろしくお願いします。
- みんなの回答 (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 /? 等を見てください。
その他の回答 (1)
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
質問の内容から想像するに、Windowsの話ですよね。 手っ取り早い方法としては、リソースキットに含まれる"forfiles"という バッチ支援ツールを使うのが良いかと思います。 リソースキットをお持ちでなければ、類似品がダウンロードできます。
お礼
ありがとうございました。 教えていただいた構文を利用して無事に バッチを作成して処理することができました!