我花了过去的三个小时试图解决这个问题,但是无法找到解决方案。以下是我的批处理脚本:
if NOT Exist Counter.txt GOTO START
Type c:\counter.txt
if %COUNTER% EQU %Cycles% goto Pass
if NOT %COUNTER% EQU %Cycles% goto Cycle
:START
Set COUNTER=0
set CYCLES=250
:Cycle
set /A COUNTER=%COUNTER%+1 <----------- PROBLEM
echo Iteration %COUNTER% of %CYCLES%
echo Delay 3 seconds to reboot
choice /cy /n /t:y,3
warmboot.com
:Pass
pause
它所做的是运行文件"warmboot.com"(可以重新启动我的电脑)并运行250个循环。一旦循环运行了250次(即当计数器等于循环次数时),它就停止。
在Windows下,这个程序可以正常工作。然而,在DOS环境下,它无法正常工作。我尝试过v4到v6.22甚至v7版本,但它们都在"PROBLEM"这一行失败了。
如果我这样做:
set /A COUNTER=%COUNTER%+1
echo %Counter%
或者这个:
set /A COUNTER+=1
echo %Counter%
两者都会返回一个空行,即不会显示任何输出。
如果我输入:
set /?
然后它显示如下内容:
显示、设置或删除cmd.exe环境变量。
SET [variable=[string]]
variable指定环境变量名称。
string指定要分配给该变量的一系列字符。
但在Windows的CMD下输入相同的命令会显示更多东西。我认为DOS下的SET功能不支持算术函数,但出于工作目的,我必须仅在DOS中运行我的脚本。
有任何想法吗?