如何创建一个 DEL 命令未能正确执行的报告文件?
我原以为你会这样做:
DEL FILENAME.TXT ECHO "FILENAME.TXT" >> REPORT.TXT
但它所做的只是创建一个空的报告文件,无论它是否找到 FILENAME.TXT。我想创建一个报告文件,如果由于某种原因无法删除 FILENAME.TXT,弹出的消息将被转储到 REPORT.TXT 中。
有任何想法吗?
如何创建一个 DEL 命令未能正确执行的报告文件?
我原以为你会这样做:
DEL FILENAME.TXT ECHO "FILENAME.TXT" >> REPORT.TXT
但它所做的只是创建一个空的报告文件,无论它是否找到 FILENAME.TXT。我想创建一个报告文件,如果由于某种原因无法删除 FILENAME.TXT,弹出的消息将被转储到 REPORT.TXT 中。
有任何想法吗?
仅供您参考。如果发生严重错误, DEL 命令确实会返回错误代码,但是它的行为超出了我们的直觉,人们会简单地认为错误代码根本不起作用。
这是我在 Windows 7 的 DEL 命令中测试过的:
并且,如果您为 DEL 命令指定一个文件列表,其中至少一个文件符合上述最后两种错误,则列表中的任何文件都不会被删除。
即使找不到文件或文件需要管理员访问权限,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)