2
@echo off
pushd

setlocal enabledelayedexpansion enableextensions

set VARY=before
if "!VARY!" == "before" (
set VARY=2    
if "!VARY!" == "2" @echo If you see this, yes echo !VARY!
)


set VAR=before
if "!VAR!" == "before" (
set VAR=1
if "!VAR!" == "1" @echo If you see this, it worked
)

popd

期待される出力:
これが表示された場合、はい 2
これが表示された場合、正常に動作しました

実際の出力:
これが表示された場合、うまくいきました

出力に「If you see this, yes 2」も表示されない理由を誰かが説明できますか?

4

2 に答える 2

1

それは簡単です。の代わりに初めて設定VARYしたとき。 22

これを回避するには、常に次の構文を使用しますset "VARY=2"

この構文は、最初の引用符から最後の引用符までの入力のみを受け取り、最後の引用符の後のすべての文字は削除されます。

于 2013-05-26T19:50:38.503 に答える
1

の後に末尾のスペースがある2ので、比較してくださいif "2 " == "2"(等しくない)。

これを回避するには、次のコードを使用します。

「VARY=前」に設定
if "!VARY!" ==「前に」(
「VARY=2」に設定
if "!VARY!"=="2" echo これが表示されたら、はい echo !VARY!
)

.. 数値を設定する場合は、「set /a」も使用できます。

「VARY=前」に設定
if "!VARY!" ==「前に」(
/a VARY=2 を設定
if "!VARY!"=="2" echo これが表示されたら、はい echo !VARY!
)
于 2013-05-26T19:53:58.700 に答える