Как увеличить переменную под DOS?

Я потратил последние 3 часа, пытаясь решить это, но просто не мог найти решение. Вот мой пакетный скрипт:

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, и все они терпят неудачу, когда он достигает линии «ПРОБЛЕМА».

Если я сделаю это:

set /A COUNTER=%COUNTER%+1
echo %Counter%

Или это:

set /A COUNTER+=1
echo %Counter%

оба возвращают пустую строку, то есть в качестве вывода ничего не отображается.

Если я наберу:

set /?

тогда это показывает это:

Отображает, устанавливает или удаляет переменные среды cmd.exe.

SET [variable = [string]]

переменная Определяет имя переменной среды.
строка Определяет серию символов для назначения переменной.

но ввод той же команды в CMD в Windows показывает гораздо больше вещей. Я думаю, что функция SET в DOS не поддерживает арифметические функции, но для рабочих целей я должен запускать свои сценарии только в DOS.

Есть идеи?

Ответы на вопрос(8)

Ваш ответ на вопрос