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 bash
oder sh
irgendetwas, das auch nur annähernd der Bourne-Shell ähnelt. Windows-Batch-Skripts werden normalerweise auf der cmd.exe
Shell ausgeführt, einem Abkömmling von COMMAND.COM
MS-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 (