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

Кирилл

Команда форума
Администратор
Сообщения
14,089
Реакции
6,139
Баллы
993
А если исходя из переменной мне нужно выполнить определенный call?
Тогда просто используем set ==результат,и запуск команды верно?
А можно пример кода с комментарием?

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

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,394
Реакции
5,892
Баллы
718
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 (под спойлером) на сколько хорошо прослеживается логика вложенных условий.
 
Последнее редактирование:
Сверху Снизу