报告无法删除在DEL批处理文件的文件(Reporting failed to delete to a

2019-10-18 01:35发布

怎样才能创造一个地方DEL命令未能正确执行报告文件?

我还以为你会怎么做:

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

但它的作用是使一个空的报告文件,无论是否发现FILENAME.TXT与否。 我想创造一个失败,如果有删除FILENAME.TXT不管什么原因,在弹出的消息被倒入REPORT.TXT的报告文件。

有任何想法吗?

Answer 1:

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)


Answer 2:

只是为了您的信息。 Del命令,如果出现严重错误返回错误代码,但它的行为是远远超出我们的直觉,人们会简单地认为该错误代码不会在所有的工作。

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

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

而且,如果你指定的文件列表,以DEL命令,在文件中至少有一个适应后两种错误上面提到的,那么没有在列表中的文件将在所有被删除



文章来源: Reporting failed to delete to a file in DEL batch files