Descobriu uma solução, mudou as coisas um pouco.
FOR /f "usebackq tokens=2,3" %%a in ('nslookup myip.opendns.com resolver1.opendns.com') do (set PublicIP=%%a)
Tentando limpar meu arquivo de lote ... Tendo problemas com o seguinte comando ainda imprimindo algumas informações:
FOR /F "tokens=2" %%a in ('nslookup myip.opendns.com resolver1.opendns.com') do (set PublicIP=%%a)
Mantém a saída:
Non-authoritative answer:
Eu tentei o seguinte, mas nenhum trabalho ...
>NUL
>NUL 2>1
(e alguns outros que estou esquecendo)
Descobriu uma solução, mudou as coisas um pouco.
FOR /f "usebackq tokens=2,3" %%a in ('nslookup myip.opendns.com resolver1.opendns.com') do (set PublicIP=%%a)
Eu encontrei uma solução que pode ajudar você, na minha situação eu precisei disso, para que eu possa obter meu IP público sem o alerta de resposta não autoritativo:
FOR /F "SKIP=4 TOKENS=2" %%a IN ('"NSLOOKUP myip.opendns.com resolver1.opendns.com 2>NUL"') DO ECHO %%a
Observe as aspas "e" entre colchetes;)
Encontrei-o por acaso após dois dias de pesquisa, enquanto lia a seguinte explicação sobre a análise da saída de um comando em loops dentro de arquivos em lote: link
Tags command-line batch