自解压文件解压后执行批处理不能完全执行命令
自解压文件名为123.exe,解压后运行批处理文件,批处理文件中含有此三行命令:echo%~dp0>>path.txtdel/F/Q"%~dp0123.exe"del/F...
自解压文件名为123.exe,解压后运行批处理文件,批处理文件中含有此三行命令:
echo %~dp0>>path.txt
del /F/Q "%~dp0123.exe"
del /F/Q %0
但是解压后批处理执行了第一行命令向path.txt中写入了当前地址,执行了最后一条公命令将自己删除了。
唯独没有执行第二条命令“将自解压文件删除”这是什么原因??
另外在WINDOWS7在却能正常执行全部三条,在XP中却不行?? 展开
echo %~dp0>>path.txt
del /F/Q "%~dp0123.exe"
del /F/Q %0
但是解压后批处理执行了第一行命令向path.txt中写入了当前地址,执行了最后一条公命令将自己删除了。
唯独没有执行第二条命令“将自解压文件删除”这是什么原因??
另外在WINDOWS7在却能正常执行全部三条,在XP中却不行?? 展开
3个回答
展开全部
我猜您是把调用批处理的命令放在自解压文件的"命令"部分了吧。
这三句话执行时间应当是几十毫秒或百毫秒计的,所以第一条在执行完时,解压缩文件还没运行完,被windows阻止了,但是批处理命令本身的执行是调入内存再执行的,所以没执行完,也能删除成功的。
您可以这样,假设您原来这个批处理叫myclear.bat,您再写一个mycall.bat:
start myclear.bat
del myclear.bat
自解压文件执行后,改为调用mycall.bat,然后,在您的原批处理第二行前面,加上:
ping localhost >nul
中间加的那句相当于等待4秒(4次本地ping),在这段时间里必须完成自解压和自解压的内存释放。
您试一下,如果可以了,尝试直接调用myclear.bat。
这三句话执行时间应当是几十毫秒或百毫秒计的,所以第一条在执行完时,解压缩文件还没运行完,被windows阻止了,但是批处理命令本身的执行是调入内存再执行的,所以没执行完,也能删除成功的。
您可以这样,假设您原来这个批处理叫myclear.bat,您再写一个mycall.bat:
start myclear.bat
del myclear.bat
自解压文件执行后,改为调用mycall.bat,然后,在您的原批处理第二行前面,加上:
ping localhost >nul
中间加的那句相当于等待4秒(4次本地ping),在这段时间里必须完成自解压和自解压的内存释放。
您试一下,如果可以了,尝试直接调用myclear.bat。
展开全部
echo %~dp0>>path.txt
del /s /q /f "%~dp0123.exe"
del /s /q /f %0
更多追问追答
追问
什么意思?
追答
删除的参数不对
你应该换一种思路
echo %~dp0>>path.txt
set /p path=<path.txt
del /s /q /f %path%\123.exe
del /s /q /f %0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议用绝对路径 D:\path.txt
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询