我花了过去3小时试图解决这个问题,但找不到解决方案。这里是我的批处理脚本:如何在DOS下增加变量?
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%
OR这样的:
set /A COUNTER+=1
echo %Counter%
都将返回一个空行,即它说明不了什么作为输出。
如果键入:
set /?
话,就说明这一点:
显示,设置或删除cmd.exe的环境变量。
SET [可变= [字符串]]
变量指定环境变量名。
字符串指定要分配给变量的一系列字符。
但在Windows下的CMD中键入相同的命令显示了更多的东西。我在考虑DOS下的SET函数不支持算术函数,但出于工作目的,我只能在DOS下运行我的脚本。
任何想法?
我很*很确定普通DOS不能这样做。写一个实际的程序,而不是(有很多语言可供选择,例如[Turbo Pascal](http://edn.embarcadero.com/article/20803)或[C](http://www.delorie.com/ djgpp /),甚至可能是QBasic)。 –
@Michael Madsen,我不熟悉这些语言,对于我的工作要求,我必须在DOS中运行批处理脚本。 – shadowz1337
好的旧时代...... DOS下没有BASIC吗?如果我没有记错,它只有一个EXE,而且它很小(低于1 MB?) – Stephan