Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 报告无法删除到DEL批处理文件中的文件_Batch File_Echo_Delete File - Fatal编程技术网

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

Batch file 报告无法删除到DEL批处理文件中的文件,batch-file,echo,delete-file,Batch File,Echo,Delete File,如果DEL命令无法正确执行,如何创建报告文件 我本以为你会这么做: DEL FILENAME.TXT ECHO "FILENAME.TXT" >> REPORT.TXT 但它所做的只是生成一个空报告文件,而不管它是否找到FILENAME.TXT。我想创建一个报告文件,如果由于任何原因无法删除FILENAME.TXT,弹出的消息将转储到report.TXT中 有什么想法吗 即使找不到文件或文件需要管理员访问,Del命令始终返回错误代码0,因此您需要在尝试删除文件后检查文件是否仍然存在

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

我本以为你会这么做:

DEL FILENAME.TXT ECHO "FILENAME.TXT" >> REPORT.TXT
但它所做的只是生成一个空报告文件,而不管它是否找到FILENAME.TXT。我想创建一个报告文件,如果由于任何原因无法删除FILENAME.TXT,弹出的消息将转储到report.TXT中


有什么想法吗

即使找不到文件或文件需要管理员访问,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)

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)

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

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

  • 成功删除所有文件:0(当然)
  • 已删除某些文件,缺少某些文件:0(1)
  • 由于没有权限或只读介质,删除失败:0(0)≥ (一)
  • 驱动器不存在或驱动器未准备就绪(例如CD-ROM驱动器上没有CD):1(是的,您得到了它,但我预计会有更高的错误代码)
  • 无效路径:1(我也希望有更高的错误代码)

而且,如果您指定一个要删除的文件列表命令,其中至少有一个文件符合上面提到的最后两种错误,那么列表中的任何文件都不会被删除。

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

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

  • 成功删除所有文件:0(当然)
  • 已删除某些文件,缺少某些文件:0(1)
  • 由于没有权限或只读介质,删除失败:0(0)≥ (一)
  • 驱动器不存在或驱动器未准备就绪(例如CD-ROM驱动器上没有CD):1(是的,您得到了它,但我预计会有更高的错误代码)
  • 无效路径:1(我也希望有更高的错误代码)

而且,如果您指定要删除的文件列表命令,其中至少有一个文件符合上面提到的最后两种错误,则列表中的任何文件都不会被删除。

问题可能是一个问题可能是一个感谢Elektro。我已经编写了一个检查是否存在的批处理文件来跟踪它,但是我想知道DEL命令是否有一种内置的报告结果的方法。我会用我的支票,如果存在的话,谢谢!np我很乐意帮助您,但如果我的答案解决了您的问题,请确保使用“接受”按钮接受我的答案,谢谢。完成。对不起,这是一个新网站。谢谢Elektro。我已经编写了一个检查是否存在的批处理文件来跟踪它,但是我想知道DEL命令是否有一种内置的报告结果的方法。我会用我的支票,如果存在的话,谢谢!np我很乐意帮助您,但如果我的答案解决了您的问题,请确保使用“接受”按钮接受我的答案,谢谢。完成。很抱歉,这个网站比较新。非常好!我知道前3项,但不知道第4项和第5项,也不知道你最后的陈述。测试很好,非常好!我知道前3项,但不知道第4项和第5项,也不知道你最后的陈述。很好的测试。