¿Cómo asignar una variable en el shell de Windows?

¿Cómo asignar una variable en el shell de Windows?

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 basho shcualquier cosa que se parezca remotamente al shell Bourne. Los scripts por lotes de Windows generalmente se ejecutan en el cmd.exeshell, un descendiente de COMMAND.COMMS-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 (

información relacionada