- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
是否可以使批处理文件自行删除?
我试图让它执行另一个文件来删除它,但这没有用。
有人知道我该怎么做吗?
我正在使用的批处理文件已提升。我的操作系统是 Windows 7 32 位。
最佳答案
npocmaka 的答案有效,但它会生成以下错误消息:“找不到批处理文件。”如果控制台窗口在以下时间关闭,这不是问题脚本终止,因为消息会闪过如此之快,没有人会看到它。但是如果脚本终止后控制台仍然打开,这是非常不可取的。
在没有错误消息的情况下删除文件的技巧是在脚本终止后让另一个隐藏进程删除文件。这可以使用 START/B 启动删除过程轻松完成。删除过程的启动和执行需要时间,因此父脚本有机会在删除发生之前干净地终止。
start /b "" cmd /c del "%~f0"&exit /b
如果您担心 SHIFT 会破坏 %0
值,您可以简单地使用 CALLed 子例程。
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"
返回的 ERRORLEVEL 将为 0,因为 DEL 是最后一个命令,它总是清除 ERRORLEVEL。
如果您需要控制 ERRORLEVEL,那么类似
(goto) 2>nul & del "%~f0" & cmd /c exit /b 10
关于windows - 如何使批处理文件自行删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20329355/
我发现以下帖子非常有帮助: How to pickle yourself? 但是,此解决方案的局限性在于,重新加载类时,它不会以其“运行时”状态返回。即它将重新加载所有变量等以及类在转储时的一般状态.
我是一名优秀的程序员,十分优秀!