Я пытаюсь присвоить значение переменной на основе оператора 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 в качестве вывода.
Удалите пробел вокруг знака равенства:
set org = "landscape"
set org = "portrait"
В дополнение к уже предоставленному ответу где было выделено, что вы использовали пробелы по обе стороны от вашего символа =
. Это означает, что вы устанавливаете, например:
org = "portrait".
Если вы не удалите эти пробелы, вам потребуется Echo
:
%org %
, чтобы увидеть значение, которое вы установили, (и это также включает двойные кавычки).
Я бы дополнительно предложил вам использовать этот синтаксис:
@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%
Проще говоря, условные операторы &&
и ||
фактически означают, если предыдущая команда была успешной и если предыдущая команда не удалась, соответственно.
спасибо, что вышли на ваш путь, чтобы дать оптимальный ответ! У меня есть дополнение, если вы не возражаете: ``` @echo off SET VAR=portrait IF "%VAR%" == "portrait" do ( SET /a height=1920; set /a width=1080; ) else do( set /a height=1080; set /a width=1920; ) echo %height% ``` это дает мне значение высоты как 1080, а не ожидаемое значение 1920. Не уверен, что здесь не так.
@SourabhSriom, я предоставил решение для вашего комментария в качестве ответа на другой ваш вопрос.
Работает! Спасибо