使用 %%A 和 %A% 的区别

Difference between use of %%A and %A%

我有以下脚本:

FOR /F "tokens=1-4" %%A IN ("REG QUERY HKCU\Environment\") DO (
    ECHO %%A
)

但是,如果我们将 ECHO %%A 更改为:

ECHO %A%

输出是一样的。

通常在批处理脚本中,我用 %A% 回显我的变量,有什么区别以及为什么人们有时使用 %%A 对应于 %A%?

两种情况,两种原因:

  • 加倍的 % 是使用临时变量的记录方式,例如,在批处理文件中(不是在命令行上)用于 for 循环。
  • %放在变量的每一边是documented作为扩展环境变量的方式。

大概是因为临时变量在与环境变量相同的表中可见,所以您的循环恰好可以运行 - 但就像 setlocal 范围内的变量一样,它会消失。

MSDN 文档都在 kb75634从批处理文件文本中删除百分号