Bat if else: Batch Script — If/else Statement

Пакетные файлы Windows: если еще

Задавать вопрос

спросил

Изменено
7 лет, 1 месяц назад

Просмотрено
200 тысяч раз

Я создаю простой пакетный файл, требующий одного аргумента (вы можете указать больше, но я их игнорирую).

Для тестирования, это то, что у меня есть.

 если не %1 == "" (
    директор /с/б %1
) еще (
    эхо нет
)
 

По сути, я хочу сказать, если указан аргумент, рекурсивно отображать все файлы в папке. В противном случае скажите нет.

Это работает, когда я предоставляю аргумент, но если я его не предоставлю, он просто скажет мне (в то время это было неожиданно .

Я имею в виду, что это работает, но я хотел, по крайней мере, отобразить пользователя -дружественное сообщение, объясняющее, почему это не работает. Как мне изменить код?

  • windows
  • пакетный файл
 если не %1 == "" (
 

должно быть

, если не "%1" == "" (
 

Если аргумент не задан, он полностью пуст, даже не "" (который представляет собой пустую строку в большинстве языков программирования). Поэтому мы используем окружающие кавычки для обнаружения пустого аргумента.

3

Окружите чем-нибудь свой %1 .

Пример:

 если не "%1" == ""
 

Еще один, который я видел довольно часто:

 если не {%1} == {}
 

И так далее…

Проблема, как вы можете догадаться, в том, что %1 буквально заменяется пустотой. Это не «пустая строка», это на самом деле пустое место в вашем исходном файле в этот момент.

Затем, после замены, интерпретатор пытается разобрать оператор if и запутывается.

Вы должны сделать следующее:

 если "%1" == "" (
    эхо Переменная пуста
) ЕЩЕ (
    эхо Переменная содержит %1
)
 

1

Другой связанный с этим совет — используйте «%~1» вместо «%1». Введите «ПОЗВОНИТЬ /?» в командной строке Windows, чтобы получить более подробную информацию.

1

Альтернативой может быть установка переменной и проверка ее определения:

 SET ARG=%1
IF DEFINED ARG (эхо "Определено: %1") ELSE (эхо "%%1 не определено")
 

К сожалению, использование %1 напрямую с DEFINED не работает.

вы должны сделать так…

если не «A%1» == «A»

если входной аргумент %1 равен нулю,
ваш код будет иметь проблемы.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

Пакетный файл, если еще — Как использовать, если еще в программировании пакетного файла?

В этом руководстве вы узнаете о структурах принятия решений, которые представляют собой командный файл if else .

Если еще заявление: Введение
Синтаксис оператора If else
Партии, если еще примеры

В основном логика программирования зависит от True (1) или False (0). Как и в любом другом языке программирования, операторы командного файла if else помогают нам принять решение между истинным/ложным или несколькими вариантами путем наложения определенного условия.

Пакетный файл, если оператор else

— Синтаксис

, если (условие) сделать что-то

:: Для if..else если
if (условие) (оператор1) else (оператор2) 

Итак, как следует из синтаксиса, сначала проверяется условие, и если оно истинно, соответствующие операторы выполняются в пакетном файле оператора if. Что касается пакетного файла , если еще , сначала проверяется условие оператора if, и если оно истинно, выполняется оператор 1 , иначе выполняется оператор2 .

Блок-схема пакетного файла If Else

Ниже приведена блок-схема, иллюстрирующая концепцию оператора if else .

Теперь, когда мы узнали, как работает пакетный файл if else, давайте рассмотрим несколько примеров.

Пакетный файл, если еще Пример: проверка целочисленных переменных и строковых переменных

Подробные сведения о переменных пакетного файла см. в этой статье.

 КОМПЛЕКТ /А а=2
КОМПЛЕКТ /А б=3
НАБОР name1=Астон
НАБОР name2=Мартин

:: Использование оператора if
ЕСЛИ %a%==2 эхо Значение a равно 2
IF %name2%==Martin echo Привет, это Мартин

:: Использование операторов if else
IF %a%==%b% (эхо-номера равны) ELSE (эхо-номера разные)
ЕСЛИ %name1%==%name2% (эхо-имя такое же) ELSE (эхо-имя другое)
ПАУЗА 

Теперь это будет генерировать следующий вывод.

Пакетный файл, если еще Пример проверки, определена ли переменная или нет

 @echo OFF

::Если var не определен, SET var = hello
ЕСЛИ "%var%"=="" (SET var=Hello)

:: Это можно сделать и таким образом
ЕСЛИ НЕ ОПРЕДЕЛЕН var (SET var=Hello)
 

В любом случае, он установит var на 'Hello' , так как это не было определено ранее.

Пакетный файл, если еще Пример проверки существования файла или папки

EXIST Команда используется для проверки существования файла. Прочтите эту статью, чтобы узнать подробности о EXIST и всех других командах пакетного файла.

 @эхо ВЫКЛ.

::EXIST используется для проверки существования
ЕСЛИ СУЩЕСТВУЕТ D:\abc.txt ECHO abc.txt найден
ЕСЛИ СУЩЕСТВУЕТ D:\xyz.txt (ECHO xyz.txt найден) ELSE (ECHO xyz.txt не найден)

PAUSE 

Теперь предположим, что у нас есть "abc.txt" на диске D, а "xyz.txt" не существует на диске D: тогда будет сгенерирован следующий вывод.