变量不在循环中取值[批量]

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 行本身。