Estou pegando um valor do registro atribuindo-o %%b
e tentando passar %%b
para outra área dentro do arquivo em lote, conforme mostrado abaixo.
Mas sai como %b
.
Não passa a variável uma segunda vez:
Set SN=reg query "HKLM\SOFTWARE\XXXXXX Systems\XXXXXaway" /v "SerialNumber"
Não funciona obviamente.
Aqui está meu código:
@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"
Pensamentos?
%%b
só é válido dentro do loop FOR.Você deve substituir
echo %%b
porset var=%%b
e usar%var%
no código a seguir.Você pode colocar
echo %var%
após o loop FOR para verificar seu valor.Sem querer ser repetitivo, mas o que acontece dentro do
For
loop é válido dentro do loop, a menos que você defina dentro doFor
loop para uso dentro ou fora do loop.Mas também pode ocorrer salvar antes do seu
For
loop para usar dentro doFor
loop.Veja como seria essa segunda opção aplicada no seu contexto:
Nota No seu exemplo está presente Skip=2, o que não sei se é realmente relevante/necessário, a menos que sua consulta retorne 3 linhas e a de interesse seja a terceira (e última linha)
Algumas leituras adicionais:
Set /?
CMD /?
For Loop
For /D Loop
For /R Loop