Почему показывает в echo не верное значение?

Есть код в батнике:
set /p filemp3sek=23

if %filemp3sek% GEQ 1 if %filemp3sek% LEQ 10 (
set skolkoRazUsaemJpg=1
) 
else if %filemp3sek% GEQ 11 if %filemp3sek% LEQ 15 (
set skolkoRazUsaemJpg=2
) 
else if %filemp3sek% GEQ 16 if %filemp3sek% LEQ 20 (
set skolkoRazUsaemJpg=3
) 
else if %filemp3sek% GEQ 21 if %filemp3sek% LEQ 35 (
set skolkoRazUsaemJpg=4
) 
else if %filemp3sek% GEQ 36 if %filemp3sek% LEQ 60 (
set skolkoRazUsaemJpg=5
) 
else if %filemp3sek% GEQ 61 if %filemp3sek% LEQ 100 (
set skolkoRazUsaemJpg=6
) 
else if %filemp3sek% GEQ 101 if %filemp3sek% LEQ 170 (
set skolkoRazUsaemJpg=7
) 
else if %filemp3sek% GEQ 171 if %filemp3sek% LEQ 280 (
set skolkoRazUsaemJpg=8
) 
else if %filemp3sek% GEQ 281 if %filemp3sek% LEQ 400 (
set skolkoRazUsaemJpg=9
) 
else if %filemp3sek% GEQ 401 if %filemp3sek% LEQ 600 (
set skolkoRazUsaemJpg=10
) 
else if %filemp3sek% GEQ 601 if %filemp3sek% LEQ 900 (
set skolkoRazUsaemJpg=11
) 
else if %filemp3sek% GEQ 901 if %filemp3sek% LEQ 1500 (
set skolkoRazUsaemJpg=12
) 
else if %filemp3sek% GEQ 1501 if %filemp3sek% LEQ 2500 (
set skolkoRazUsaemJpg=13
) 
else if %filemp3sek% GEQ 2501 if %filemp3sek% LEQ 4500 (
set skolkoRazUsaemJpg=14
) 
else if %filemp3sek% GEQ 4501 (
set skolkoRazUsaemJpg=16
)


echo %skolkoRazUsaemJpg%


выдаёт в echo:
63d6d7e926a4b113961318.png

Почему я не вижу в echo число 4 , хотя оно должно там отображаться? Ведь filemp3sek=23 что находится в диапазоне от 21 до 35 и в коде у нас есть строка, которая отвечает на это:
if %filemp3sek% GEQ 21 if %filemp3sek% LEQ 35 (
set skolkoRazUsaemJpg=4
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
1. Команда
set /p filemp3sek=23
Не присваивает переменной filemp3sek значение 23, как, возможно, вы думали. В данном случае 23 - это приглашение для ввода. Ключ /p заставляет команду set принять значение введенное с клавиатуры. Если ничего не ввести и нажать на Enter, то значение переменной не определено (переменная не существует).
Просто уберите ключ /p

2. Блок else является частью команды if. Но в батниках команда (любая) должна быть записана в одной строке. Но в команде if можно использовать круглые скобки, чтоб тело if можно было удобно записывать на разных строках, а не комкать все в нечитаемый текст в одной строке. Но как только вы пишете закрывающую блок скобку это действие завершается. Следовательно фразу else и следующие за ней ifы вместе со следующей открывающей скобкой надо писать в одной строке с предыдущей закрывающей скобкой. Работающий пример:
if %filemp3sek% GEQ 1 if %filemp3sek% LEQ 10 (
set skolkoRazUsaemJpg=1
) else if %filemp3sek% GEQ 11 if %filemp3sek% LEQ 15 (
set skolkoRazUsaemJpg=2
) else if %filemp3sek% GEQ 16 if %filemp3sek% LEQ 20 (
...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
CTRL+ Москва
от 250 000 до 320 000 ₽
CTRL+ Москва
от 200 000 до 300 000 ₽
CTRL+ Белград
от 250 000 до 320 000 ₽
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час