BATCH SET не может использовать оператор деления

Я не могу разделить, используя оператор деления, указанный в команде SET.

SET / A 216/18

SET / A div = 216/18

ECHO% div%

Хотя это должно работать и работает в окне командной строки, но при использовании через пакетный скрипт выдает пустой вывод.

лайк

ЭХО включено.

В чем дело?

2 ответа

Решение

Это может произойти, если ваш extenstions отключены Ты можешь проверить setlocal /? а также cmd /? для получения дополнительной информации о extensions,

Но set /? определяет:

If Command Extensions are enabled SET changes as follows:  
...
Two new switches have been added to the SET command:  
  SET /A expression  
  SET /P variable=[promptString]

Так без extensions /A не работает.

Вы можете добавить setlocal-линии в начало вашего пакетного файла:

setlocal enableextensions enabledelayedexpansion
SET /A 216/18
SET /A div=216/18
ECHO %div%

Извините, но я добавил строки, а файл dos bat все равно не умеет делить.

Но, признаю, что читать справку по теме не имело смысла.

Вот бат-код, и что не так?:

:DOS не может выполнить деление.

УСТАНОВИТЬ часы2запись=13 УСТАНОВИТЬ минуты2рекорд=05 УСТАНОВИТЬ длину дорожки=46800

set /a секунды = %hours2record% * 3600 + % минут2record% * 60 эхо, пока все хорошо. Секунды — это пауза %секунд%

::SET /A trackdiv=%секунды%/46800 не работает ::SET /A trackdiv=468000/46800 работает ::SET /A trackdiv=секунды/46800 также не работает SET /A %секунды%/%tracklength%SET /A trackdiv=%секунды%/%tracklength% & не работает

Переменная echo trackdiv рассчитывается как %trackdiv% . Это не верно! 47100/46800 не равно 1! Глупый дос! Пауза

установитьлокальный /? пауза cmd /?

Другие вопросы по тегам