除了 *.BAT 文件夹,删除所有文件夹

4
我想在父目录中删除除MYFOLDER之外的所有文件夹,但我无法完成这个操作。
for %%i in ("C:\Parent") do if not "%%i"=="MYFOLDER" del /f /q "%%i

有人可以检查一下这段代码吗?

(我正在使用*.bat文件)


请查看以下网址:http://social.technet.microsoft.com/Forums/scriptcenter/en-US/fb007a7f-9207-4dc6-ba50-0723c89e6f77/delete-except-certian-files?forum=ITCG - mihai_mandis
2
你喜欢删除文件或文件夹吗?如果你想要删除文件夹,应该使用RD而不是DEL。 - Rafael
3个回答

4
这应该能帮到您:
for /d %%i in ("C:\Parent\*") do if /i not "%%~nxi"=="MYFOLDER" del /s /q "%%i"

1
你能解释一下 %%~nxi 代表什么吗?它对我不起作用,但是 %%i 可以。 - Munchkin
rd 是删除文件夹的命令,我猜测。 - RepiatX

0

Dir 所有文件夹并逐个检查是否不是 MYFOLDER,如果不是,则删除它。 在运行真正的作业时,请删除 echo

for /d %%i in (C:\Parent\*) do (
    if /i "%%i" NEQ ".exe" echo rd /S /Q %%i
)

1
请注意,如果您只使用 for /d 而不是使用 for /f 迭代 dir 输出,那么您将避免很多麻烦。 - Joey
是的,抱歉,应该是 /F。 - mihai_mandis

0

或者简单地将MYFOLDER复制到一个临时文件夹中,删除所有文件,然后再将MYFOLDER复制回来。除非MYFOLDER非常大且复制需要时间,否则这应该能够很好地工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接