コマンド・プロセッサは、ブロック(括弧の間に何かを)見つけ、それを完全に解析し、ブロックが評価されたときに、彼らが持っている値に変数を展開すると、あなたはsetlocal enabledelayedexpansion
@echo off
setlocal enabledelayedexpansion
IF 1==1 (
set /p "t=type in value: "
echo You typed: !t!
set "t=!t! plus Suffix"
echo Your value + suffix: !t!
)
pause
endlocal
exit/B
を必要としています。ブロック内の変数の値を更新する場合は、変更を反映するために遅延拡張を有効にする必要があります。また、あなたは(http://stackoverflow.com/questions/ [Windowsのバッチ・ファイル内のif文で変数の値を取得することはできません]の次
@echo off
setlocal enabledelayedexpansion
set "var=Round 0"
echo(----------------------------------------------
for /L %%i in (1,1,5) do (
set "var=Round %%i"
echo(var is %var% [not using delayed expansion]
echo(var is !var! [using delayed expansion]
echo(----------------------------------------------
)
echo(After block %var% !var! are the same
pause
exit/B
が重複する可能性を考えてみましょう
!var!
へ
%var%
を変更する必要があります15765884/windows-statement-in-window-batch-fileで変数を取得できない) – aschipfl