No shell do Windows7, tenho o seguinte código funcional para imprimir o endereço IP atual:
@echo off
:: get ipv4
ipconfig | findstr IPv4 | findstr 172 > ipadd.txt
:: For statement to find the numbers
for /F "tokens=13" %%i in (ipadd.txt) do (
echo %%i
)
del ipadd.txt /Q
No entanto, não quero que o endereço IP seja impresso, mas armazenado em uma variável, como no seguinte trecho de código (que não funciona):
@echo off
:: get ipv4
ipconfig | findstr IPv4 | findstr 172 > ipadd.txt
:: For statement to find the numbers
for /F "tokens=13" %%i in (ipadd.txt) do (
set ip=%%i
)
del ipadd.txt /Q
echo IP is $ip
A saída esperada é (exemplo)
IP é 123.456.7.8
a saída real é
IP é $ ip
Como consertar isso?
Responder1
Você marcou sua pergunta com [bash]. Você énãoescrever um script para bash
ou sh
qualquer coisa remotamente parecida com o shell Bourne. Os scripts em lote do Windows geralmente são executados no cmd.exe
shell, um descendente do COMMAND.COM
MS-DOS, e possuem uma sintaxe completamente diferente.
Em particular,%name%
, não$name
, é a sintaxe para variáveis em scripts em lote do Windows e do MS-DOS.
echo IP is %ip%
Enquanto você está nisso:
for /F "tokens=13" %%i in ('ipconfig | findstr IPv4 | findstr 172') do (