2

如何创建一个 DEL 命令未能正确执行的报告文件?

我原以为你会这样做:

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

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

有任何想法吗?

4

2 回答 2

5

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

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

  • 成功删除所有文件:0(当然)
  • 删除了一些文件,丢失了一些文件:0(直觉预期为 1)
  • 由于没有权限或只读介质导致删除失败:0(直觉期望≥1)
  • 不存在的驱动器或驱动器未准备好(例如 CD-ROM 驱动器上没有 CD):1(是的,你明白了,但我会期待更高的错误代码)
  • 无效路径:1(我也会期望更高的错误代码)

并且,如果您为 DEL 命令指定一个文件列表,其中至少一个文件符合上述最后两种错误,则列表中的任何文件都不会被删除

于 2015-08-18T09:36:48.713 回答
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)
于 2013-04-24T00:01:52.600 回答