次の形式のディレクトリを削除したい:
C:\Program Files\FogBugz\Plugins\cache\[email protected]_NN
NN
は数値なので、ワイルドカードを使用します(これは、Visual Studioのビルド後の手順の一部です)。問題は、パス名(Program Files
内のスペース)を引用符で囲み、パスの末尾に一致するようにワイルドカードを使用する必要があることです。 rd
がワイルドカードを受け入れるremoveコマンドであることはすでに知っていますが、引用符はどこに置きますか?終了引用符を試していません(dir
で機能します)、...example.com*"
、...example.com"*
、...example.com_??"
、...cache\"[email protected]*
、...cache"\[email protected]*
ですが、どれも試していませんそれらは機能します。
(とにかく、Windowsにはファイル/ディレクトリを削除するコマンドがいくつありますか?そして、なぜそれらすべての機能が異なるのですか?)
rmdir
サポートしていませんワイルドカード。完全なファイル名のみを受け入れます。
この代替手段を試すことができます:
for/d%f in( "C:\ Program Files\FogBugz\Plugins\cache\[email protected]_ *")do rmdir/s/q "%〜f"
(rmdir
への/s/q
引数はUnixのrm -rf
と同じことをします。for /d
引数はfor
をファイル名ではなくディレクトリ名と一致させます。 )
cmd.exe
シェルはワイルドカード展開を行わないことに注意してください(Unix sh
とは異なります)-これはコマンド自体によって処理されます。
^
文字でスペースをエスケープできます:C:\Program^ Files\FogBugz\Plugins\cache\[email protected]_*