如果我想在CMD中这样做
rm D:/archive/*/*2017*
我必须使用什么命令?
我试试这个并不起作用。
del D:/archive/*/*2017*
我提出的解决方案是,它有效。
cd "D:/archive"
for /F %i in ('dir /AD /B') do del %i\*2017*
如果有人有更简单的解决方案,请建议我。谢谢。
答案 0 :(得分:0)
通配符(*
,?
)仅在它们出现在路径的 last 元素中时才会被解析,因此没有更简单的解决方案。
您的for /F
循环方法甚至不够全面,因为它不安全:
cd
命令在当前工作目录位于另一个驱动器D:
上时不会更改为预期目录,因此缺少/D
开关; &
,^
,(
,)
)可能会导致意外行为,因为您没有在所有字符周围加上引号路径; for /F
提供选项字符串,因此它会在第一个空白字符处拆分目录名称,因为delims
选项默认为 SPACE 和< kbd> TAB ,由于默认的;
选项,它会忽略名称以eol
开头的目录; \
,正斜杠/
可能会导致错误; 这是固定代码:
cd /D "D:\archive" & for /F "delims= eol=|" %I in ('dir /B /A:D') do @del "%I\*2017*"
为简化起见,您也可以使用for /D
循环代替for /F
,因此不再需要cd
命令:
for /D %I in ("D:\archive\*") do @del "%~I\*2017*"