Если присвоение переменной оператора в пакетном файле игнорируется - PullRequest
0 голосов
/ 30 мая 2019

Я новичок в пакетном кодировании и пытаюсь написать простое утверждение 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 Ответ

2 голосов
/ 30 мая 2019

Вы выдаете в основном потому, что нет такой вещи как оператор 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%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...