set 命令如何在 Windows CMD 的 FOR 循环中工作

How set command works in FOR loop of Windows CMD

我是 CMD 脚本的新手。请解释发生了什么: 脚本:

FOR %%W IN (
    aaa
    bbb
) DO (
    echo was=%%W 
    set fff=%%W*
    echo new=%fff%    
)

结果:

was=aaa
new=bbb*
was=bbb
new=bbb*

谢谢。

命令解释器需要知道循环内的变量需要重新计算。搜索并了解 ENABLEDELAYEDEXPANSION.

SETLOCAL ENABLEDELAYEDEXPANSION

FOR %%W IN (
    aaa
    bbb
) DO (
    echo was=%%W 
    set fff=%%W*
    echo new=!fff!
)