Como atribuir uma variável no shell do Windows?

1

No shell do Windows 7, tenho o seguinte código de trabalho 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 (não-funcional) snippet de código:

@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?

    
por Alex 01.07.2014 / 13:21

1 resposta

3

Você marcou sua pergunta com [bash]. Você não escreve um script para bash ou sh ou qualquer coisa, nem mesmo remotamente como o shell Bourne. Os scripts de lote do Windows geralmente são executados no shell cmd.exe , um descendente de COMMAND.COM do MS-DOS e possuem uma sintaxe completamente diferente.

Em particular, %name% , não $name , é a sintaxe das variáveis nos 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 (
    
por 01.07.2014 / 13:34