Пакет, если форма с (до (в этом? - PullRequest
2 голосов
/ 23 января 2011

Что я в основном пытаюсь сделать, так это сделать 2 IF, которые могли бы затем разрешить в 4 do с действием in. Я предполагаю, что я делаю что-то, чего не могу, потому что я получаю ошибку:

) was not expected

Может ли кто-нибудь объяснить мне форму, которую я должен использовать для выполнения DO в результате теста IF? Большое спасибо.

Ниже вы найдете код, который я пытался запустить. (это абстракция i.o код языка)

if (logicaltest1) ( do (
if (logicaltest2) ( do (
action 1
echo something 1
)
) else ( do (
action 2
echo something 2
)
) else (
if (logicaltest) ( do (
action 3
echo something 3
)
)
) else ( do (
action 4
echo something 4
)
)

Четыре варианта, в булевых значениях для 2, если я просто проясняю: #t#t,#t#f,#f#t,#f#f (партия в дос)

Ответы [ 3 ]

5 голосов
/ 23 января 2011

В «Пакете DOS» «DO» не используется в выражениях «IF», ​​а вместо этого добавляется с «FOR».

В Windows 2000 / XP / Vista / 7, вы можете набрать IF /? для справки. Точно так же FOR /? поможет вам в выражении "FOR".

Пример эскиза:

if CONDITION1 (
  if CONDITION2 (
    echo CONDITION1 true, and CONDITION2 true
  ) else (
    echo CONDITION1 true, and CONDITION2 false
  )
) else (
  if CONDITION3 (
    echo CONDITION1 false, and CONDITION3 true
  ) else (
    echo CONDITION1 false, and CONDITION3 false
  )
)
2 голосов
/ 23 января 2011

Идентификация - лучший способ выяснить, что не так:

if (logicaltest1) (
    do (
        if (logicaltest2) (
            do (
                action 1
                echo something 1
            )
        ) else (
            do (
                action 2
                echo something 2
            )
        *)* (missing)
    *)* (missing)
) else (
    if (logicaltest) (
        do (
            action 3
            echo something 3
        )
    *)* (unexpected)
    ) else (
        do (
            action 4
            echo something 4
        )
    )
*)* (missing)

Это должно сработать.

0 голосов
/ 01 февраля 2011

Почему-то мне не нравятся вложенные IF в пакетных файлах.Когда это возможно, я пытаюсь преобразовать их, чтобы у меня всегда был только один уровень отступа.

В случае, если есть люди, которые разделяют такое неприятие, вот что, вероятно, можно сделать в этом конкретном случае:1004 *

Конечно, вложение может дать такое преимущество, что, когда нам нужно выполнить некоторые команды, которые зависят только от CONDITION1, нам не нужно повторять их, тогда как при моем подходе кажется, что мы это делаем.Тем не менее, я тоже пытаюсь разобраться в таких случаях, например, использовать дополнительные IF, например, if /I selector lss 2 ... или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...