将变量传递给批处理文件中的变量

将变量传递给批处理文件中的变量

我正在从注册表中获取一个值%%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"

有什么想法吗?

答案1

不想重复,但是For循环内部发生的事情在循环内部是有效的,除非你在循环内部定义它For以供循环内部或外部使用。

但也可能发生在循环之前保存For以供循环内使用的情况For

看看第二个选项在你的环境中应用效果如何:

@echo off 

set "_Query=Reg Query "HKLM\SOFTWARE\XXXXXX Systems\XXXXXaway" /v "SerialNumber""
set "_Atlas="%Programfiles(x86)%\carefusion\RSS Component Manager\Tools\atlas.DeviceRegistration.exe""
set "_arg's=environment=SQE serialnumber=^%%~b displayname=%computername% "devicetype=XXXXXX 2" "sapshipto=27703""

for /f "tokens=2*" %%a in ('%_Query%') do %_Atlas% %_arg's%

笔记 在您的示例中,存在 Skip=2,我不知道它是否真的相关/必要,除非您的查询返回 3 行,而感兴趣的是第三行(也是最后一行)


答案2

%%b仅在 FOR 循环内有效。

您应该echo %%b用替换,然后在以下代码中set var=%%b使用。%var%

您可以将其放在echo %var%FOR 循环后面来验证其值。

相关内容