Команда IF не работает при использовании NOT или == для использования CALL и SET для установки переменной - PullRequest
0 голосов
/ 23 марта 2019

Я создаю простую программу, которая будет выводить переменные из SET /p строк в красивый, аккуратный список. Однако у меня возникают проблемы при создании 2 рабочих операторов IF, один из которых использует NOT, а другой - ==, чтобы определить, является ли одна из моих переменных, %pwad%, пустой или содержит значения. Я хочу использовать то, что возвращает оператор IF, чтобы установить для переменной %finalpwad% либо "No pwad detected", либо %pwad%.

Как мне правильно написать это утверждение? Где мне могут потребоваться исправления, исправляющие операторы IF или, возможно, даже часть, в которой для %pwad% установлено %finalpwad%?

Я уже пытался починить свою call часть и то, что они вызывают, но безрезультатно. Я почти уверен, что это проблема с оператором IF, так как я не слишком хорошо с ними справляюсь и всегда с трудом читаю заметки о команде из IF /?.

Вот фрагмент моего кода и источник возникшей у меня проблемы:

set /p pwad=Set a pwad (or none): 

if %pwad% NOT [] call :yespwad & pause
if %pwad% == [] :nopwad & pause

:nopwad
set finalpwad=No pwad detected
goto :printout

:yespwad
set finalpwad=%pwad%
goto :printout

Я ожидаю, что вывод продолжится на :printout, где он отображает все переменные, которые вводит пользователь, но вместо этого выходит из программы и делает так, что я не могу узнать, правильно ли он прочитал мои IF NOT или IF == заявления. Я элементарно добавил паузы, чтобы погасить проблему и посмотреть, где находится источник, и пришел к выводу, что он должен IF утверждений.

1 Ответ

3 голосов
/ 23 марта 2019

Файл справки четко показывает правильный синтаксис для сравнения строк.

IF [NOT] string1==string2 command

Рекомендуется также использовать кавычки при сравнении строк.

IF "string1"=="string2" command

IF сравнения буквальны. Каждая сторона сравнения должна совпадать. Использование скобок не проверяет наличие пустой строки.

Также есть возможность проверить, определена ли переменная.

IF DEFINED VAR command

Глядя на свою логику, вы можете сделать это:

@echo off

set /p "pwad=Set a pwad (or none): "

IF DEFINED pwad (
    set "finalpwad=%pwad%"
) ELSE (
    set "finalpwad=No pwad detected"
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...