Rel*_*lla 28 process batch-file delete-file
如何制作.BAT文件完成后自行删除?我有一个简单的bat文件终止进程.我希望.BAT文件删除自己.
dbe*_*ham 43
Merlyn Morgan-Graham的答案设法删除正在运行的批处理脚本,但它会生成以下错误消息:" 无法找到批处理文件. "如果脚本终止时控制台窗口关闭,这不是问题,因为消息将闪过这么快就没有人会看到它.但是,如果在脚本终止后控制台仍保持打开状态,则非常不希望出现错
John Faminella有正确的想法,需要另一个过程来干净地删除批处理文件而不会出错.调度任务可以工作,但有一种更简单的方法:使用START在同一控制台中启动新的删除过程.进程启动和执行需要一些时间,因此父脚本有可能在删除发生之前彻底终止.
start /b "" cmd /c del "%~f0"&exit /b
Run Code Online (Sandbox Code Playgroud)
更新2015-07-16
我发现了另一种非常灵活的方法,可以让批处理脚本自行删除,而不会生成任何错误消息.该技术取决于新发现的GOTO行为(由一些俄罗斯人发现),英文描述于http://www.dostips.com/forum/viewtopic.php?f=3&t=6491
总之,(GOTO) 2>NUL行为类似EXIT /B,除了它允许在调用者的上下文中执行连接命令!
所以你需要的只是
(goto) 2>nul & del "%~f0"
Run Code Online (Sandbox Code Playgroud)
Mer*_*ham 34
@ECHO OFF
SETLOCAL
SET someOtherProgram=SomeOtherProgram.exe
TASKKILL /IM "%someOtherProgram%"
ECHO "This script will now self-destruct. Please ignore the next error message"
DEL "%~f0"
Run Code Online (Sandbox Code Playgroud)
注意,DEL行最好是你打算在批处理文件中执行的最后一件事,否则你运气不好:)
这将打印出一个丑陋的错误消息,但它是良性的,并且代码稍微不那么令人困惑.如果你非常关心摆脱错误信息,请参阅dbenham的答案以摆脱它.