Wie weise ich in der Windows-Shell eine Variable zu?

Wie weise ich in der Windows-Shell eine Variable zu?

In der Windows7-Shell habe ich den folgenden funktionierenden Code, um die aktuelle IP-Adresse auszudrucken:

@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

Ich möchte die IP-Adresse jedoch nicht ausgedruckt, sondern in einer Variablen gespeichert haben, wie im folgenden (nicht funktionierenden) Codeausschnitt:

@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

Die erwartete Ausgabe ist (Beispiel)

Die IP lautet 123.456.7.8

Die tatsächliche Ausgabe ist

IP ist $ip

Wie kann man das beheben?

Antwort1

Sie haben Ihre Frage mit [bash] markiert. Sie sindnichtSchreiben eines Skripts für bashoder shirgendetwas, das auch nur annähernd der Bourne-Shell ähnelt. Windows-Batch-Skripts werden normalerweise auf der cmd.exeShell ausgeführt, einem Abkömmling von COMMAND.COMMS-DOS, und haben eine völlig andere Syntax.

Insbesondere,%name%, nicht$name, ist die Syntax für Variablen in Windows- und MS-DOS-Batchskripten.

echo IP is %ip%

Und wenn Sie schon dabei sind:

for /F "tokens=13" %%i in ('ipconfig | findstr IPv4 | findstr 172') do (

verwandte Informationen