我是批处理文件编码的新手,正在尝试编写一个简单的If-Else语句。
我尝试按照其他问题中的建议使用延迟扩展,但似乎仍无法获得正确的值
@echo off
setlocal ENABLEDELAYEDEXPANSION
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。有人可以帮我理解吗?
答案 0 :(得分:2)
您提出的问题主要是因为没有If / Do
或Else / Do
语句之类的东西。另外,您应该记住Set /A
确实是用于算术的,并且您不是在做数学,只是将值设置为名称。
If "%VAR%" == "portrait" (
Set "height=1920"
Set "width=1080"
) Else (
Set "height=1080"
Set "width=1920"
)
Echo %height%
但是,在这种情况下,您仍然可以使用Set /A
来稍微缩短命令;因为Set /A
允许在同一条语句中使用多个名称将值整数化。
If "%VAR%" == "portrait" (
Set /A height=1920, width=1080
) Else (
Set /A height=1080, width=1920
)
Echo %height%