使用命令行删除目录及其文件,但如果不存在则不报错

126
我需要一个Windows命令来删除一个目录和其中的所有文件,但是如果该目录不存在,我不想看到任何错误信息。
5个回答

119

del命令的输出重定向到nul。请注意2,表示错误输出应该被重定向。另请参阅此问题,特别是技术文档“使用命令重定向运算符”

del {whateveroptions} 2>null

或者您可以在调用del之前检查文件是否存在:

if exist c:\folder\file del c:\folder\file
请注意,您可以使用 if exist c:\folder\(带有尾随的\)来检查c:\folder是否确实是一个文件夹而不是一个文件。

1
我尝试过了,仍然出现“系统找不到指定的路径”的错误。 - jaywayco
5
强制递归删除,忽略错误:rmdir /s /q some\where\myFolder 2>nul - crusy
@crusy 非常感谢,但这与 dbenham 六年前给出的答案完全相同(rmdir=rd)。 - GolezTrol

74

将stderr重定向到nul

rd /q /s "c:\yourFolder" 2>nul

在删除之前,请验证文件夹是否存在。注意,在 IF 条件中,尾部的 \ 是至关重要的。

if exist "c:\yourFolder\" rd /q /s "c:\yourFolder"

18
你们两个都没有按照操作者的要求删除文件夹,而是专注于删除一个文件。 - dbenham

42

对于我在Windows 10上,以下内容非常有效:

if exist <path> rmdir <path> /q /s

q代表“无需询问即删除”,s代表“删除其中所有子文件夹和文件”。

您还可以连接命令:

(if exist <path> rmdir <path> /q /s) && <some other command that executes after deleting>

1
连接符可以帮助我,否则当rmdirif exist配对时它将无法工作。 - noszone

2
您可以将stderr重定向到nul。
del filethatdoesntexist.txt 2>nul

2
你试过这个吗?这个不起作用。如果它不存在,我仍然会看到错误。 - dgo

1

上面的代码会在提示框中返回 Y 或 N。所以我使用了下面的代码,它完美地解决了问题。

if exist cddd rmdir cddd

希望这对某个人有所帮助。

干杯。


为了避免提示,您需要在rmdir命令中添加 __/Q__。如果您需要删除所有文件和子目录,还需要添加 __/S__。您可能没有看到提示,因为该目录不存在。 - Bemipefe

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