ワイルドカード(*
、?
)は、彼らだけが、パスの最後要素に表示されたときに解決するので、このためのより容易な解決策はありませんされています。それは安全ではありませんので、
あなたfor /F
ループアプローチは、さえ十分に包括的ではありません。
cd
コマンドは、現在の作業ディレクトリが別のドライブ上にあるときに予想されるディレクトリに変更しますがD:
、そうではないでしょう/D
スイッチがありません。
- などの特殊文字(たとえば、
&
、^
、(
、)
など)は、すべてのパスに引用符を使用していないため、予期しない動作が発生する可能性があります。
- は
for /F
のためにありませオプション文字列が存在しないので、SPACEとTABをデフォルトによるdelims
オプションに最初の空白文字でディレクトリ名を分割するだろうし、それが名前;
で始まるディレクトリを無視しますデフォルトのeol
オプションのためです。
- Windowsのパス区切り文字は円記号
\
です。スラッシュ/
はエラーにつながる可能性があります。ここで
固定コードです:
cd /D "D:\archive" & for /F "delims= eol=|" %I in ('dir /B /A:D') do @del "%I\*2017*"
それは単純に、あなたもこのように、代わりにfor /F
のfor /D
ループを使用することができますので、必要なもうcd
コマンドが存在しないようにするには:
は、
for /D %I in ("D:\archive\*") do @del "%~I\*2017*"