删除目录中除一个目录外的所有子目录

时间:2015-02-25 19:54:46

标签: windows batch-file

我尝试使用批处理文件删除%path%中除子目录foobar以外的所有子目录:

for /D %%d in ("%path%\*") do if NOT "%%d" == "foobar" rd /S /Q "%%d"

但是,%path%中的所有子目录都将被删除,包括foobar 可能会发生什么?

1 个答案:

答案 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%已经具有特殊含义,如果你踩到脚趾,你就会遇到问题。