如果批处理文件中的语句变量分配被忽略

时间:2019-05-30 05:49:42

标签: batch-file if-statement

我是批处理文件编码的新手,正在尝试编写一个简单的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。有人可以帮我理解吗?

1 个答案:

答案 0 :(得分:2)

您提出的问题主要是因为没有If / DoElse / 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%