в пакетных файлах DOS, В IF
оператор, действительно ли возможно объединить два или больше использования условий И или ИЛИ? Я не смог найти любую документацию для этого
Редактирование - help if
и в документах MS ничто не говорится об использовании больше чем одного условия в если.
Я предполагаю обходное решение для И должен был бы сделать
if COND1 (
if COND2 (
cmd
)
)
но это точно, чего я стараюсь избегать.
Нет, более простого способа нет.
Для и
вы также можете просто соединить их в цепочку без введения блоков:
if COND1 if COND2 ...
что, честно говоря, не хуже
if COND1 and COND2 ...
Однако для или
это становится более уродливым, действительно:
set COND=
if COND1 set COND=1
if COND2 set COND=1
if defined COND ...
или:
if COND1 goto :meh
if COND2 goto :meh
goto :meh2
:meh
...
:meh2
Однажды я видел пакетный препроцессор, который использовал C-подобный синтаксис для потока управления и пакетных вещей между ними, а затем преобразовывал такие условия в многочисленные переходы и проверки. Однако эта штука предназначалась для пакетных файлов DOS и была практически бесполезна в среде Windows.
Пока поскольку расширения команд включены, вы можете использовать операторы сравнения.
Это непосредственно вставлено из "help if":
Если расширения команд включены, IF изменяется следующим образом:
IF [/I] string1 compare-op string2 command
IF CMDEXTVERSION number command
IF DEFINED variable command
где compare-op может принимать одно из следующих значений:
EQU - equal
NEQ - not equal
LSS - less than
LEQ - less than or equal
GTR - greater than
GEQ - greater than or equal
и переключатель / I, если он указан, говорит делать сравнение строк без учета регистра . Ключ / I также можно использовать в форме строка1 == строка2 оператора IF. Эти сравнения являются общими: если и строка1, и строка2 состоят из всех числовых цифр, тогда строки преобразуются в числа и выполняется числовое сравнение.