自行执行删除文件

时间:2011-04-22 19:42:23

标签: windows batch-file

如何创建自动执行批处理文件以删除特定文件夹中的文件。   场景:我在服务器上有一个文件夹,扫描后所有扫描文档都会进入该文件夹。他们希望在1天后删除扫描的文档。可以创建批处理文件来每天执行此操作吗?

2 个答案:

答案 0 :(得分:3)

您可以使用内置的task scheduler - 这可以调用批处理文件,也可以调用任何内容。

(我假设Windows,因为你提到批处理文件)。

答案 1 :(得分:0)

这是一个众所周知的方法,并且在不久前在MSDN中有记录。此技术适用于Windows 95和Windows NT。它的工作原理是因为MS-DOS批处理文件能够自行删除。要测试此技术,请创建一个包含单个命令的小批处理文件:

del %0.bat

批处理文件在运行时会自行删除并发出错误“无法找到批处理文件”。此错误只是一个简单的消息,因此可以安全地忽略它。这本身并不太有用,但是当修改为删除我们的可执行文件时,它解决了我们的问题,尽管是以相当有力的方式。我们的可执行文件将创建一个批处理文件(称为C:\ DelUs.bat),其中包含以下内容:

:Repeat 
del "C:\MYDIR\MYPROG.EXE" 
if exist "MYPROG.EXE" goto Repeat 
rmdir "C:\MYDIR" 
del "\DelUS.bat"

此批处理文件反复尝试删除指定的文件,并将连续运行消耗CPU,直到成功为止。删除可执行文件后,批处理文件将自行删除。

可执行文件需要使用CreateProcess生成批处理文件,然后应立即退出。给批处理文件的执行线程一个低优先级是个好主意,这样在原始可执行文件终止之前它不会花费太多的执行时间。

阅读http://www.catch22.net/tuts/self-deleting-executables处的整篇文章,其中包含此技术的完整代码。