请高手帮我修改一下这个批处理
@echo off
::批处理试用次数过后,本程序将自动销毁。
if exist c:\0000 goto 判断
echo 10>c:\0000
goto menu
:判断
cls
for /f "delims=" %%a in (c:\0000) do (set mm=%%a)
if "%mm%"=="0" goto 销毁
set /p times="%mm%-1"
del /q c:\0000
echo %times%>c:\0000
goto menu
if "%times%"=="0" goto 销毁
:销毁
del /q /f %0
exit
:menu
cls
::\\\\\\\\\\\\\\\ 批 处 理 内 容 \\\\\\\\\\\\\\\::
echo.
echo ╔━━━━━━━━━━━━╗
echo ┃ 这里是批处理的正文 ┃
echo ╚━━━━━━━━━━━━╝
pause
exit
::\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\::
思路是,让批处理运行时自动判断有无c:\0000文件,无则新建一个,有则进行判断“0000”文件里的数值,为0时,程序直接销毁;不为0时,将数值-1,重新写入“0000”中,待运行时下次读取。
----------------------------------------
非常感谢一楼第一个做出回答,虽然用不了
三楼纯粹灌水该打屁屁
四楼的回答很具体、专业,但我水平有限,不知道怎么向里面添加我需要的销毁操作命令,也非常感谢你。
二楼的回答直接应用,谢谢啦! 展开
::批处理试用次数过后,本程序将自动销毁。
if exist c:\0000 goto 判断
echo 10 >c:\0000
goto menu
:判断
cls
for /f %%i in (c:\0000) do set n=%%i
if "%n%"=="0 " goto 销毁
set /a n-=1
del /q c:\0000
echo %n% >c:\0000
goto menu
:销毁
del /q /f %0
:menu
cls
::\\\\\\\\\\\\\\\ 批 处 理 内 容 \\\\\\\\\\\\\\\::
echo.
echo ╔━━━━━━━━━━━━╗
echo ┃ 这里是批处理的正文 ┃
echo ╚━━━━━━━━━━━━╝
pause
exit
::\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\::
%times%>
有特殊含义
这样改:
@echo off
::批处理试用次数过后,本程序将自动销毁。
if exist c:\0000 goto 判断
(echo 10)>c:\0000
goto menu
:判断
cls
for /f "delims=" %%a in (c:\0000) do (set mm=%%a)
if "%mm%"=="0" goto 销毁
set /p times="%mm%-1"
del /q c:\0000
(echo %times%)>c:\0000
goto menu
if "%times%"=="0" goto 销毁
:销毁
del /q /f %0
exit
:menu
cls
::\\\\\\\\\\\\\\\ 批 处 理 内 容 \\\\\\\\\\\\\\\::
echo.
echo ╔━━━━━━━━━━━━╗
echo ┃ 这里是批处理的正文 ┃
echo ╚━━━━━━━━━━━━╝
pause
exit
::\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\::
你失败的原因不是你的逻辑有问题,而你你在()中用变量的时候
要用setlocal这个命令
以下是我已经调试通过的代码,你可以看看效果
图片是我用文本编辑器写出来的效果,因为在百度里好像它会把空格删除,那样代码看起来的结构不够好。所以就把图片给你看看结构。
@echo off
rem 设置用来保存计数的临时文件
set countFile=c:\a.txt
rem 设置执行次数
set runTimes=3
if not exist "%countFile%" (
echo %runTimes% >"%countFile%"
goto :正常代码
) else (
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=*" %%a in (
'more "%countFile%"'
) do (
set tmpValue=%%a
set /a tmpValue=!tmpValue!+0
if /i "!tmpValue!"=="1" (
echo 对不起,你的试用次数已经结束。
del "%countFile%" /q 1>nul 2>nul
) else (
set /a tmpValue=!tmpValue!-1
echo !tmpValue! test
echo !tmpValue! > "!countFile!"
goto :正常代码
)
)
ENDLOCAL
)
PAUSE
EXIT
:正常代码
CLS
echo ============================
echo 这里是正常执行代码。
echo ============================
pause