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


83

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

Answers:


80

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

del {whateveroptions} 2>nul

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

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

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


尝试了这个我仍然得到“系统找不到指定的路径”
jaywayco

3
强制递归删除,忽略错误:rmdir /s /q some\where\myFolder 2>nul
crusy

@crusy非常感谢,但这与dbenham在6年前已经给出的答案相同(rmdir= rd
GolezTrol

59

将stderr重定向到nul

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

或在删除之前验证文件夹是否存在。请注意,\在中频条件下尾随至关重要。

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

14
@GolezTrol-你们俩都没有按照OP的要求删除了该文件夹。你们俩都致力于删除文件。
dbenham 2013年

21

对我而言,在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>

3

您可以将stderr重定向到nul

del filethatdoesntexist.txt 2>nul

1
你有尝试过吗?这行不通。如果不存在,我仍然会看到错误
-dgo

1

上面的提示中带有Y或N。因此,我改用以下内容,并且效果很好。

if exist cddd rmdir cddd

希望这对某人有帮助。

干杯。


为了避免出现提示,您必须将/ Q添加到rmdir命令。如果您需要删除所有文件和子目录,你也需要/ S。您没有看到提示,可能是因为目录不存在。
Bemipefe
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.