npocmaka的答案有效,但会生成以下错误消息:“找不到批处理文件”。如果控制台窗口在脚本终止时关闭,则不会出现问题,因为消息会快速闪烁,没有人会看到它。但是如果控制台在脚本终止后保持打开状态是非常不希望的。
原文链接:/windows/372968.html在没有错误消息的情况下删除文件的技巧是在脚本终止后再次删除该文件。这可以使用START / B轻松完成以启动删除过程。删除过程需要时间来启动和执行,所以父脚本有可能在删除发生之前彻底终止。
start /b "" cmd /c del "%~f0"&exit /b
您可以简单地使用CALLed子例程,如果您担心SHIFT会破坏%0值。
call :deleteSelf&exit /b :deleteSelf start /b "" cmd /c del "%~f0"&exit /b
更新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"