删除目录中的所有子目录,除了一个

Delete all subdirectories in a directory except for one

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

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

但是,正在删除 %path% 中的所有子目录,包括 foobar
会发生什么?

从命令行尝试。

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%已经有特殊含义了,踩到脚就麻烦了