У меня есть пакетный код ниже, который принимает значение в качестве входных, определяет, находится ли оно в заданном c диапазоне, а затем должен установить новую переменную и вывести ее. Однако это не работает должным образом. Во-первых, код:
set /p wndBr=<C:\summaries\daily_values_wind_bearing.txt
if %wndBr% GEQ 56.25 if %wndBr% LSS 78.75 set wndDir="ENE"
if %wndBr% GEQ 78.75 if %wndBr% LSS 101.25 set wndDir="E"
if %wndBr% GEQ 101.25 if %wndBr% LSS 123.75 set wndDir="ESE"
echo %wndBr%
echo %wndDir%
Когда я запускаю это, я получаю:
C:\summaries>set /p wndBr= 0<C:\summaries\daily_values_wind_bearing.txt
C:\summaries>if 89.68 GEQ 56.25 if 89.68 LSS 78.75 set wndDir="ENE"
C:\summaries>if 89.68 GEQ 78.75 if 89.68 LSS 101.25 set wndDir="E"
C:\summaries>if 89.68 GEQ 101.25 if 89.68 LSS 123.75 set wndDir="ESE"
C:\summaries>echo 89.68
89.68
C:\summaries>echo
ECHO is on.
Как показано, входная переменная wndBr
оказывается равной 89,68, поэтому средняя Если следует использовать оператор. Я тестировал, и не похоже, что if logi c неверен. Проблема, похоже, заключается в установке переменной wndDir
. Я пробовал круглые скобки вокруг оператора, кавычки вокруг значения, без кавычек, %% вокруг переменной, используя set /p
и т. Д. Ясно, что мне чего-то не хватает, но я не знаю, что еще проверить.
Для справки, этот код должен принимать средний пеленг ветра (от 0 до 360 градусов), а затем преобразовывать его в направление, IE пример выше. Для большего "веселья" мне еще предстоит выяснить, как определить, как получить "Север" (if "%wndBr%" GEQ 0.00 if LSS 11.25 OR GEQ 348.75 if LSS 0.00 goto set wndDir="N"
<- я знаю, что использование ИЛИ неверно, я просто еще не пытался исправить это, пока не смогу получить "более простые" работают). </p>