web-dev-qa-db-fra.com

Fichier batch: Quel est le meilleur moyen de déclarer et d'utiliser une variable booléenne?

Quel est le meilleur moyen de déclarer et d'utiliser une variable booléenne dans les fichiers batch? C'est ce que je fais maintenant:

set "condition=true"

:: Some code that may change the condition

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

Y a-t-il une meilleure façon, plus "formelle" de faire cela? (Par exemple, dans Bash, vous pouvez simplement exécuter if $condition puisque true et false sont des commandes qui leur sont propres.)

9
James Ko

Je m'en tiens à ma réponse originale pour le moment:

set "condition=true"

:: Some code...

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

Si quelqu'un connaît un meilleur moyen de le faire, répondez à cette question et j'accepterai volontiers votre réponse.

7
James Ko
set "condition="

et

set "condition=y"

y pourrait être n'importe quelle chaîne ou numérique.

Cela permet à if defined et if not defined qui peuvent tous deux être utilisés dans une instruction block (une séquence d'instructions entre parenthèses) d'interroger le statut d'exécution du drapeau sans avoir besoin de enabledelayedexpansion


c'est à dire.

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

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

Le premier fera écho false, le second true

12
Magoo

Je suppose qu'une autre option consisterait à utiliser "1 == 1" comme valeur de vérité.

Répétant ainsi l'exemple:

set condition=1==1

:: some code

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

Bien sûr, il serait possible de définir certaines variables pour contenir les valeurs true et false:

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

set condition=%true%

:: some code

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