变量不在循环中取值[批量]
Variable not taking value in a loop [Batch]
我正在尝试执行以下批处理,但无法理解 varvpccidr
的行为
set filetemp=temp.txt
for /F "delims=" %%a in (%filetemp%) do (
set varvpccidr=%%a
echo [%%a] {%varvpccidr%]
)
输出:
[172.25.243.0/25 ] []
temp.txt 包含:
172.25.243.0/25
您需要使用延迟扩展:
setlocal enableextensions enabledelayedexpansion
set filetemp=temp.txt
for /F "delims=" %%a in (%filetemp%) do (
set varvpccidr=%%a
echo [%%a] [!varvpccidr!]
)
endlocal
它不能正常工作的原因与这样一个事实有关,在计算 for
命令时(它是 entire 四行从 for
到右括号),varvpccidr
还没有值。
通过使用 delayed 扩展,您可以将变量的扩展推迟到最后可能的点,即 echo
行本身。
我正在尝试执行以下批处理,但无法理解 varvpccidr
set filetemp=temp.txt
for /F "delims=" %%a in (%filetemp%) do (
set varvpccidr=%%a
echo [%%a] {%varvpccidr%]
)
输出:
[172.25.243.0/25 ] []
temp.txt 包含:
172.25.243.0/25
您需要使用延迟扩展:
setlocal enableextensions enabledelayedexpansion
set filetemp=temp.txt
for /F "delims=" %%a in (%filetemp%) do (
set varvpccidr=%%a
echo [%%a] [!varvpccidr!]
)
endlocal
它不能正常工作的原因与这样一个事实有关,在计算 for
命令时(它是 entire 四行从 for
到右括号),varvpccidr
还没有值。
通过使用 delayed 扩展,您可以将变量的扩展推迟到最后可能的点,即 echo
行本身。