このスクリプトを実行する場合 (.bat ファイルから):
set var1=true
if "%var1%"=="true" (
set var2=myvalue
echo %var2%
)
私はいつもこう思います:
ECHO is on.
つまり、var2
変数は実際には設定されていません。 理由を理解するのを手伝ってくれる人はいますか?
ベストアンサー1
echo %var2%
var2 は設定されていますが、ブロックが実行される前に行内の展開が発生します。
この時点ではvar2
空です。
したがって、delayedExpansion 構文が存在し、!
の代わりにが使用され%
、解析時ではなく実行時に評価されます。
を使用するには!
、追加のステートメントsetlocal EnableDelayedExpansion
が必要になりますのでご注意ください。
setlocal EnableDelayedExpansion
set var1=true
if "%var1%"=="true" (
set var2=myvalue
echo !var2!
)