我正在尝试基于批处理文件中的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%
此输出应为“ landscape”,我已验证该字符串确实存在于文件中。出于某种原因,我得到0作为输出。
答案 0 :(得分:2)
作为已提供答案的补充,突出显示您在 =
字符两边使用了空格。这表示您正在设置,例如:
o r g = “ p o r t < /kbd>rait"。
除非您删除这些空格,否则需要 Echo
:
% o r g %
以查看您要设置的值(其中还包括双引号)。
我还建议您使用以下语法:
@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%
简单地说,条件运算符 &&
和 ||
有效表示上一条命令是否成功以及是否先前的命令分别失败了。
答案 1 :(得分:0)
删除等号周围的空格:
set org="landscape"
set org="portrait"