Как установить значение переменной на основе оператора if в командном файле - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь присвоить значение переменной на основе оператора if-else в командном файле. Я ищу в текстовом файле строку, и если строка найдена, мне нужно присвоить переменную определенное значение.

Я использовал оператор if-else для присвоения значения, но после выхода из оператора if-else, когда я пытаюсь отобразить переменную, я получаю значение 0

@echo off

set "logfile=results.txt"
find /n /i "Orientation      : 0" "%logfile%" >nul
if %errorlevel% equ 0 (
    set org = "landscape"

) else (
    set org = "portrait"

)

echo %org%

Вывод для этого должен быть 'ландшафт', я убедился, что строка существует в файле. По какой-то причине я получаю 0 в качестве вывода.

Ответы [ 2 ]

2 голосов
/ 30 мая 2019

В качестве дополнения к уже предоставленному ответу, , где было подчеркнуто, что вы использовали пробелы по обе стороны от вашего = символа . Это означает, что вы устанавливаете, например:
o r г = "* * р тысячу двадцать две * ** тысяча двадцать-три 1024 * о * ** 1026 одна тысяча двадцать пять * г T г * 1 031 ** +1032 * a i t ".
Если вы не удалите эти пробелы, вам потребуется Echo : * +1044 ** *% тысяча сорок пять * +1047 * о * +1048 * г г * 1 052 * % * одна тысяча пятьдесят восемь * чтобы увидеть значение, которое вы установили, (включая двойные кавычки) .

Я бы дополнительно предложил использовать этот синтаксис:

@Echo Off
Set "logfile=results.txt"
Set "org="
Find /I "Orientation      : 0" <"%logfile%" >Nul && (
    Set "org=landscape"
) || (
    Set "org=portrait"
)
Echo %org%

В качестве альтернативы, использование FindStr дает вам небольшой маневр с наличием или количеством пробелов, например, следующие значения будут по-прежнему соответствовать:
Orientation:0
или
Orientation : 0

@Echo Off
Set "logfile=results.txt"
Set "org="
FindStr /IRC:"Orientation[\ :]*0" "%logfile%" >Nul && (
    Set "org=landscape"
) || (
    Set "org=portrait"
)
Echo %org%

Проще говоря, условные операторы && и || фактически означают, если предыдущая команда была успешной и если предыдущая команда не выполнена, соответственно .

0 голосов
/ 30 мая 2019

Убрать пробел вокруг знака равенства:

set org="landscape"
set org="portrait"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...