2017-02-19 1 views
0

Ich möchte IP-Adresse auf eine Variable festlegen, aber mein Code funktioniert nicht.Set funktioniert nicht in für Schleife Skript-Batch

@echo off 

setlocal EnableDelayedExpansion enableextensions 

SET IP= 
for /f " tokens=14 delims= " %%i in ('ipconfig ^| findstr /c:"IPv4 Address"') do SET /P IP = %%i 
call :foo 

:foo 
SET _AA = IP 
echo _AA 
+0

wirklich hilft, wenn Sie die Hilfe und Dokumentation für den Befehl lesen Sie versuchen zu verwenden? Der Befehl set ist nicht so schwer zu verstehen. – Squashman

Antwort

0

Hier ist ein Weg, um Ihr Ziel zu erreichen:

@Echo Off 
Set "IP=" 
For /F "Delims=" %%A In ('IPConfig^|Find "IPv4"') Do Set "IP=%%A" 
If Not Defined IP GoTo :EOF 
Set "IP=%IP:*: =%" 
Echo(Local variable %%IP%% resolves to %IP% 
Timeout -1 
GoTo :EOF 
+0

Sie sind erstaunlich! Vielen Dank. – Mert

2

Spaces sind signifikant auf beiden Seiten des = in einem set

die Zwischenräume entfernen.

Um die Inhalt einer Variablen zu referenzieren var Sie %var%

Batch einfach weiter line-by-line verwenden müssen, bis sie eine goto oder End-of-Datei erreicht. Es hat kein Konzept von "Prozeduren". Nachdem Sie Ihre for ausgeführt haben, wird es fortgesetzt und erneut die set und echo ausführen. Sie benötigen eine Zeile

goto :eof 

vor dem Etikett :foo. Dieser Befehl geht an End-of-Datei (der Doppelpunkt ist in diesem Fall erforderlich)

+0

können Sie den Code bearbeiten? – Mert

+0

@Mert, also sagst du, du würdest lieber jemanden haben, der dir den Fisch gibt und dann fischen lernen. – Squashman

Verwandte Themen