En el shell de Windows7 tengo el siguiente código de trabajo para imprimir la dirección IP actual:
@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
Sin embargo, no quiero que se imprima la dirección IP, sino que se almacene en una variable, como en el siguiente fragmento de código (que no 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
El resultado esperado es (ejemplo)
La IP es 123.456.7.8
la salida real es
IP es $ip
¿Cómo arreglar eso?
Respuesta1
Has etiquetado tu pregunta con [bash]. Estásnoescribir un guión para bash
o sh
cualquier cosa que se parezca remotamente al shell Bourne. Los scripts por lotes de Windows generalmente se ejecutan en el cmd.exe
shell, un descendiente de COMMAND.COM
MS-DOS, y tienen una sintaxis completamente diferente.
En particular,%name%
, no$name
, es la sintaxis de las variables en scripts por lotes de Windows y MS-DOS.
echo IP is %ip%
Mientras estás en ello:
for /F "tokens=13" %%i in ('ipconfig | findstr IPv4 | findstr 172') do (