Board logo

标题: [求助]在批处理中删除本身批处理文件? [打印本页]

作者: hyzys     时间: 2004-11-25 00:00    标题: [求助]在批处理中删除本身批处理文件?
记得有一个命令可以删除批处理本身的,一下子忘了,就是比如:
在A.BAT中用一个什么命令使得可以删除A.BAT本身?

作者: Climbing     时间: 2004-11-26 00:00
@echo off
echo Before delete:
dir %0.*
echo Going for delete myself...
echo %0 | find /i ".bat"
if errorlevel 1 goto _addext
copy %0 %0.bak > nul
del %0
goto _quit:_addext
copy /y %0.bat %0.bat.bak > nul
del %0.bat:_quit

作者: autoit     时间: 2004-11-26 00:00
以下是引用Climbing在2004-11-26 13:21:37的发言:

@echo off
echo Before delete:
dir %0.*
echo Going for delete myself...
echo %0 | find /i ".bat"
if errorlevel 1 goto _addext
copy %0 %0.bak > nul
del %0
goto _quit
:_addext
copy /y %0.bat %0.bat.bak > nul
del %0.bat
:_quit

del /q a.bat 就可以的吧?

作者: 小石头     时间: 2004-11-27 00:00
如果批处理不叫A.bat怎么办?我的批处理是针对任何文件名的(当然扩展名必须是BAT)。楼主出的问题是让批处理删除自身,并没有限定这个批处理一定要叫A.BAT,所以要从批处理内部判断自己叫什么。

作者: linson     时间: 2004-12-1 00:00
del /q %0就可以删除本身.

作者: willsort     时间: 2004-12-4 00:00
Re Climbing:
将你的程序略作修改。另外,仍然有无法找到批处理文件的提示,生成临时的删除程序也会留下尾巴,所以还是需要利用系统的卸载机制,不过程序就复杂化了。
Re linson:
del /q %0 语句,当在命令行使用主程序名调用批处理程序时,无法删除自身。
@echo off
echo Before delete:
dir %0.*
echo Going for delete myself...
::echo %0 | find /i ".bat"
::if errorlevel 1 goto _addext
if exist %0.bat goto _addext
if not exist %0 goto _quit
copy %0 %0.bak > nul
del %0
goto _quit
:_addext
copy /y %0.bat %0.bat.bak > nul
del %0.bat
:_quit