web-dev-qa-db-ja.com

Windowsコマンドでワイルドカードとスペース(引用符)を組み合わせる方法は?

次の形式のディレクトリを削除したい:

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にはファイル/ディレクトリを削除するコマンドがいくつありますか?そして、なぜそれらすべての機能が異なるのですか?)

2
Jan Fabry

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とは異なります)-これはコマンド自体によって処理されます。

3
user1686

^文字でスペースをエスケープできます:C:\Program^ Files\FogBugz\Plugins\cache\[email protected]_*

0
Darth Android