我尝试使用批处理文件删除%path%
中除子目录foobar
以外的所有子目录:
for /D %%d in ("%path%\*") do if NOT "%%d" == "foobar" rd /S /Q "%%d"
但是,%path%
中的所有子目录都将被删除,包括foobar
可能会发生什么?
答案 0 :(得分:3)
从命令行尝试。
for /d %I in ("path\*") do @echo %I
请注意任何线索?所有结果都附加path\
;因此,"path\foobar"
永远不会等于"foobar"
。
尝试使用%%~nxI
技巧获取路径的叶子。
for /d %%d in ("path\*") do if not "%%~nxd"=="foobar" rd /q /s "%%d"
另外,为路径使用不同的变量名称。 %PATH%
已经具有特殊含义,如果你踩到脚趾,你就会遇到问题。