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 /?