web-dev-qa-db-ja.com

バッチファイル:ブール変数を宣言して使用する最良の方法は何ですか?

バッチファイルでブール変数を宣言して使用する最良の方法は何ですか?これは私が今やっていることです:

set "condition=true"

:: Some code that may change the condition

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

これを行うためのより良い、より「正式な」方法はありますか? (例:Bashではif $conditiontrueおよびfalseは独自のコマンドであるため)

20
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をエコーし​​、2番目はtrueをエコーし​​ます

12
Magoo

別のオプションは、真理値として「1 == 1」を使用することだと思います。

したがって、例を繰り返します:

set condition=1==1

:: some code

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

もちろん、truefalseの値を保持するようにいくつかの変数を設定することは可能です。

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

set condition=%true%

:: some code

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