我从注册表中获取一个值,将其分配给%%b
并尝试传递%%b
到批处理文件中的另一个区域,如下所示。
但结果是%b
.
它不会第二次传递该变量:
Set SN=reg query "HKLM\SOFTWARE\XXXXXX Systems\XXXXXaway" /v "SerialNumber"
显然不起作用。
这是我的代码:
@echo off
For /F "tokens=2* skip=2" %%a in ('reg query "HKLM\SOFTWARE\XXXXXX Systems\XXXXXaway" /v "SerialNumber"') do echo %%b
"c:\program files (x86)\carefusion\RSS Component Manager\Tools\atlas.DeviceRegistration.exe" environment=SQE serialnumber=%%b displayname=%computername% "devicetype=XXXXXX 2" "sapshipto=27703"
想法?
%%b
仅在 FOR 循环内有效。您应该替换
echo %%b
为,然后在以下代码中set var=%%b
使用。%var%
您可以将其放在
echo %var%
FOR 循环之后来验证其值。不想重复,但循环内部发生的事情在
For
循环内部是有效的,除非您在循环内部定义它For
以在循环内部或外部使用。但也可能会在
For
循环之前进行保存以便在循环内使用For
。看看第二个选项在您的上下文中的应用情况:
注意 在您的示例中,存在 Skip=2 ,我不知道它是否真的相关/必要,除非您的查询返回 3 行并且感兴趣的是第三行(也是最后一行)
一些进一步阅读:
Set /?
CMD /?
For Loop
For /D Loop
For /R Loop