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

Тема в разделе "Пакетные файлы CMD, BAT", создана пользователем Kиpилл, 18 окт 2013.

  1. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    А если исходя из переменной мне нужно выполнить определенный call?
    Тогда просто используем set ==результат,и запуск команды верно?
    А можно пример кода с комментарием?

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

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.499
    Симпатии:
    4.313
    Koza Nozdri, видел твои коды.
    Очень красивы, но Имхо, бессмысленны с точки зрения отладки ошибок и понимания логики переходов по условиям.

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

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

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

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

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

    Оператор errorlevel 1 - означает что мы сравниваем %errorlevel% с 1. Если код ошибки >= 1, то условие выполняется (true).
    --- Объединённое сообщение, 18 окт 2013 ---
    Для логического сравнения чисел кавычки убираем:
    Код (DOS):
    @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 - больше или равно,
    --- Объединённое сообщение, 18 окт 2013 ---
    Не забывай, что:
    = это знак присвоения. Работает только с Set.
    == это знак сравнения. Работает в операторе IF.
    --- Объединённое сообщение, 18 окт 2013 ---
    Посмотри в коде Рекурсивный Dir /X (под спойлером) на сколько хорошо прослеживается логика вложенных условий.
     
    Последнее редактирование: 18 окт 2013
    Kиpилл нравится это.

Поделиться этой страницей