bat文件是否知道其名称并且可以自行删除

Ber*_*ing 5 windows batch-file

在我的脚本中的某个时刻,我希望bat脚本能够自行删除.这要求脚本知道其名称,然后使用该名称删除自己.这可能吗?

dbe*_*ham 12

现有的答案都没有为批处理文件提供一种干净的方式来删除自身并退出而没有任何可见的错误消息.

简单地包括del "%~f0"删除脚本,但它也导致丑陋的"无法找到批处理文件".错误信息.

如果脚本可以关闭父CMD进程(控制台窗口),那么以下工作正常,没有任何错误消息:

del "%~f0"&exit
Run Code Online (Sandbox Code Playgroud)

但是,如果您希望脚本在关闭父CMD进程的情况下删除自身并退出,并且没有任何错误消息,则会更复杂一些.

方法1:启动在实际执行删除的同一控制台窗口中运行的第二个进程.的EXIT /B可能不是必要的,但我把它放在最大化,之前启动的进程试图删除文件的批处理脚本将关闭的可能性.

start /b "" cmd /c del "%~f0"&exit /b
Run Code Online (Sandbox Code Playgroud)

方法2:创建控制并将其转移到另一个临时批处理文件,该文件删除自身以及调用者,但不使用CALL,并将stderr重定向到nul.

>"%~f0.bat" echo del "%~f0" "%~f0.bat"
2>nul "%~f0.bat"
Run Code Online (Sandbox Code Playgroud)


Jos*_*shD 3

如果我没记错的话,%0 将是用于调用批处理文件的路径。