删除目录中的所有子目录,除了一个
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%
已经有特殊含义了,踩到脚就麻烦了
我正在尝试使用批处理文件删除 %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%
已经有特殊含义了,踩到脚就麻烦了