• Администрация SafeZone приветствует вас на нашем форуме!
    Если вы больше не желаете видеть рекламу при просмотре тем и сообщений - то достаточно просто зарегистрироваться. Для зарегистрированных пользователей реклама не отображается.

Условный оператор IF - как грамотно оформить код

Кирилл

Команда форума
Администратор
Сообщения
13,046
Симпатии
5,650
#1
А если исходя из переменной мне нужно выполнить определенный call?
Тогда просто используем set ==результат,и запуск команды верно?
А можно пример кода с комментарием?

А вот такой блок будет работать:
(прошу не обращать внимание на ошибки -это пример)
Код:
if %test%=result (
                       тут блок команд
                          (тут скрипт vbs)
                              ) else echo error...
 
Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,434
Симпатии
5,292
#2
Koza Nozdri, видел твои коды.
Очень красивы, но Имхо, бессмысленны с точки зрения отладки ошибок и понимания логики переходов по условиям.

Очень рекомендую множество вложенных условий формировать по уровням,
как это делается на ЯВУ (языках высокого уровня).

Иначе, большая вероятность, потерять скобку.

CMD/BATCH:
if "%test%"=="result" (
    тут блок команд
    if "%A%"=="%B%" (
        тут скрипт vbs
    ) else (
        echo error...
    )
) else (
    echo test не равнялся result
)
2IF.png Т.е. простейший IF для строк (с игнорированием регистра букв - ключ /i ) будет:
CMD/BATCH:
if /i "%A%"=="%B%" (
    echo Удача
) else (
    echo Неудача
)
Для оператора возврата кода ошибки:

CMD/BATCH:
:: генерируем произвольный код ошибки
cmd /c Exit /B 1

if errorlevel 1 (
    echo Была ошибка
) else
    echo Не было ошибок
)

Оператор errorlevel 1 - означает что мы сравниваем %errorlevel% с 1. Если код ошибки >= 1, то условие выполняется (true).Для логического сравнения чисел кавычки убираем:
CMD/BATCH:
@echo off
set X=1
set Y=2
if %Y% GTR %X% (
    echo Y больше X
) else (
    echo Y меньше, либо равен X
)
Справка if /?

EQL - равно (или просто знак == )
NEQ - не равно
LSS - меньше
LEQ - меньше или равно
GTR - больше
GEQ - больше или равно,Не забывай, что:
= это знак присвоения. Работает только с Set.
== это знак сравнения. Работает в операторе IF.Посмотри в коде Рекурсивный Dir /X (под спойлером) на сколько хорошо прослеживается логика вложенных условий.
 
Последнее редактирование: