2016-02-22 6 views
5

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

set "condition=true" 

:: Some code that may change the condition 

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

これを行うには、より良い、より "正式な"方法がありますか? (例えば、bashで、あなただけのif $conditiontrueのでfalseは、独自のコマンドで行うことができます。)yは、任意の文字列または数値可能性があり

+3

これはかなりです。バッチの変数は、文字列か32ビット整数で、それ以外は何もありません。 – SomethingDark

+2

'if defined'を実行すると、' if'、 'for'、および遅延拡張を必要とせずに他の括弧で囲まれたコードブロック内で作業する利点が得られます。ゼロまたはゼロ以外のエラーレベルに基づく条件付き実行もあります。 – rojo

+0

"%condition%" == "true"であってはなりませんか? – SomeDude

答えて

4

秒をエコーし​​ますこの質問にお答えください。私はあなたの答えを喜んで受け入れます。

+0

Magooの答えはコードブロック内でも動作するので、より良い – jeb

7
set "condition=" 

set "condition=y" 

これはif definedif not defined両方のがenabledelayedexpansion


すなわちを必要とせず、フラグのランタイムステータスを調べるためにブロック文(文の括弧の配列)内で使用することができる可能にします。誰もがこれを行うには良い方法を知っている場合は

set "condition=true" 

:: Some code... 

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

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

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

最初はfalse、私は当面のための私の元の答えに固執していtrue

+0

@AlexanderSchäl:詳しい説明。 '%condition%'は変数 'condition'の* contents *を参照していますので、もし定義されていれば%condition%は' condition'の値が 'y'ならば' yy'と入力されます – Magoo

関連する問題