103

我需要一个 Windows 命令来删除一个目录及其所有包含的文件,但如果该目录不存在,我不想看到任何错误。

4

5 回答 5

98

将命令的输出重定向del到 nul。注意2, 表示错误输出应该被重定向。另请参阅此问题,尤其是技术文档Using command redirection operator

del {whateveroptions} 2>null

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

if exist c:\folder\file del c:\folder\file

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

于 2013-01-24T13:36:46.793 回答
68

要么将 stderr 重定向到 nul

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

或者在删除之前验证该文件夹是否存在。请注意,拖尾\在 IF 条件下至关重要。

if exist "c:\yourFolder\" rd /q /s "c:\yourFolder"
于 2013-01-24T15:14:10.137 回答
31

对我来说,在 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>
于 2018-10-12T10:00:51.737 回答
2

您可以将 stderr 重定向到 nul

del filethatdoesntexist.txt 2>nul
于 2013-01-24T13:45:44.193 回答
0

上面在提示中出现了 Y 或 N。因此,我改用了以下内容,并且效果很好。

if exist cddd rmdir cddd

希望这可以帮助某人。

干杯。

于 2019-10-24T14:15:07.730 回答