2004-06-01 [長年日記]
_ [win] 同階層ディレクトリ内の同名ファイルを削除するbatファイル
windowsのバッチファイルはunixコマンドラインに慣れてしまうと貧弱に感じますが、 結構がんばることができるのです。 やりたいことは「同階層ディレクトリ内の同名ファイルを削除したい」。*1 例えば、、、E:\deltest\hoge1\deltarget.txt E:\deltest\hoge2\deltarget.txt E:\deltest\foo\deltarget.txtの3つをまとめて削除したいのです。 そこでコマンドラインから以下のように打つと、、、
E:\>del e:\deltest\*\deltarget.txt ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。うーん、ディレクトリにはワイルドカードが使えないようです。 しかし、調べたところこれを可能にするbatファイルがありました。
@echo off for /d %%a in (E:\deltest\*) do del "%%a\deltarget.txt"ブラボーです。 ファイル名にワイルドカードを使うこともできます。 delだと間違った時にあぶないのでtypeとかdirとか無害なコマンドでテストしてから使うといいですね。 ちなみに、ディレクトリを再帰的に潜っていっての削除はしません。 E:\deltest\ の階層にあるディレクトリだけです。
*1 ちなみになんでこんなことやりたかったかというと、Namazuさんがindex作る時にNMZ.lock2を残していくことがあったので、それを消したかったのです。
Win XP あたりだと WSH でやるってのもお手軽かも。<br>簡単な JScript を書けばできそう。
はい、バッチファイルでダメならWSHかな、と思ったんですが、できたのでそこまで踏み込んでないです。<br>WSHもちょっと調べてみよっと。