2017-07-26 11 views
0

にワイルドカードを使用してファイルを削除しますか?CMDは、サブディレクトリ

私はこれを試しても動作しません。

del D:/archive/*/*2017* 

私が思いつく解決策はありますか?

cd "D:/archive" 
for /F %i in ('dir /AD /B') do del %i\*2017* 

誰かが簡単な解決策をお持ちでしたら、私にお勧めします。ありがとうございました。

答えて

0

ワイルドカード(*?)は、彼らだけが、パスの最後要素に表示されたときに解決するので、このためのより容易な解決策はありませんされています。それは安全ではありませんので、

あなたfor /Fループアプローチは、さえ十分に包括的ではありません。

  • cdコマンドは、現在の作業ディレクトリが別のドライブ上にあるときに予想されるディレクトリに変更しますがD:、そうではないでしょう/Dスイッチがありません。
  • などの特殊文字(たとえば、&^()など)は、すべてのパスに引用符を使用していないため、予期しない動作が発生する可能性があります。
  • for /Fのためにありませオプション文字列が存在しないので、SPACETABをデフォルトによるdelimsオプションに最初の空白文字でディレクトリ名を分割するだろうし、それが名前;で始まるディレクトリを無視しますデフォルトのeolオプションのためです。
  • Windowsのパス区切り文字は円記号\です。スラッシュ/はエラーにつながる可能性があります。ここで

固定コードです:

cd /D "D:\archive" & for /F "delims= eol=|" %I in ('dir /B /A:D') do @del "%I\*2017*" 

それは単純に、あなたもこのように、代わりにfor /Ffor /Dループを使用することができますので、必要なもうcdコマンドが存在しないようにするには:

は、
for /D %I in ("D:\archive\*") do @del "%~I\*2017*" 
関連する問題