it-swarm.com.ru

Пакетный файл: Какой лучший способ объявить и использовать логическую переменную?

Какой лучший способ объявить и использовать логическую переменную в пакетных файлах? Это то, что я делаю сейчас:

set "condition=true"

:: Some code that may change the condition

if %condition% == true (
    :: Some work
)

Есть ли лучший, более «формальный» способ сделать это? (Например, в Bash вы можете просто выполнить if $condition, так как true и false являются собственными командами.)

9
James Ko

Я придерживаюсь своего первоначального ответа на данный момент:

set "condition=true"

:: Some code...

if "%condition%" == "true" (
    %= Do something... =%
)

Если кто-нибудь знает лучший способ сделать это, пожалуйста, ответьте на этот вопрос, и я с радостью приму ваш ответ.

7
James Ko
set "condition="

а также

set "condition=y"

где y может быть любой строкой или числом.

Это позволяет if defined и if not defined, которые оба могут использоваться внутри оператора блока (заключенная в скобки последовательность операторов), для запроса состояния флага во время выполнения без использования enabledelayedexpansion


то есть.

set "condition="
if defined condition (echo true) else (echo false)

set "condition=y"
if defined condition (echo true) else (echo false)

Первый будет повторять false, второй true

12
Magoo

Я полагаю, что другой вариант будет использовать «1 == 1» в качестве значения истинности.

Таким образом, повторяя пример:

set condition=1==1

:: some code

if %condition% (
    %= Do something... =%
)

Конечно, можно установить некоторые переменные для хранения значений true и false:

set true=1==1
set false=1==0

set condition=%true%

:: some code

if %condition% (
    %= Do something... =%
)
0
timfoden