报告无法删除DEL批处理文件中的文件

时间:2013-04-23 21:36:46

标签: batch-file echo delete-file

如何创建DEL命令无法正确执行的报告文件?

我原以为你会这样做:

DEL FILENAME.TXT ECHO "FILENAME.TXT" >> REPORT.TXT

但它所做的只是制作一个空的报告文件,无论它是否找到FILENAME.TXT。我想要创建一个报告文件,如果它因为弹出的消息被转储到REPORT.TXT中的原因而无法删除FILENAME.TXT。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

仅供参考。如果发生严重错误,DEL命令返回错误代码,但是它的行为超出了我们的直觉,人们只会认为错误代码根本不起作用。

这是我在Windows 7中的DEL命令中测试过的:

  • 成功删除所有文件:0(当然)
  • 删除了一些文件,缺少一些文件:0(直觉预期为1)
  • 由于没有许可或只读介质而导致删除失败:0(直觉预期≥1)
  • 不存在的驱动器或驱动器未就绪(例如CD-ROM驱动器上没有CD): 1(是的,你得到它,但我会期望更高的错误代码)
  • 路径无效: 1(我预计会有更高的错误代码)

并且,如果您指定DEL命令的文件列表,其中至少有一个文件符合上面提到的最后两种错误,那么列表中的所有文件都不会被删除< / em>的

答案 1 :(得分:0)

Del命令总是返回错误代码0,即使找不到文件或文件需要管理员访问权限,因此您需要在尝试删除文件后检查文件是否仍然存在:

@Echo OFF

Set "File=File.txt"

Del "%File%" 2>NUL & If exist "%File%" (
    Echo [+] File failed to delete: "%File%" >> "Report.txt" 
)

Pause&Exit

对于大量文件,您可以创建一个不写大代码的过程,如下所示:

@Echo OFF

Call :ReportDelete "C:\File1.txt"
Call :ReportDelete "C:\File2.txt"
Call :ReportDelete "C:\File3.txt"
Call :ReportDelete "C:\File4.txt"
Call :ReportDelete "C:\File5.txt"

Pause&Exit

:ReportDelete
(Del "%~1" 2>NUL & If exist "%~1" (Echo [+] File failed to delete: "%~1" >> "Report.txt")) & (Goto:EOF)