繁体   English   中英

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

[英]If statement variable assignment in batch file ignored

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

您发出的原因主要是因为没有诸如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%

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM