Batch Datei auslesen

lordg2009

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.559
Hallo

Also folgendes (vereinfachtes) Problem:
Ich habe eine Text-Datei mit folgendem Inhalt:
Code:
192.168.0.1
MAC Adresse = 00-00-00-00-00

Nun möchte ichzum einen, dass diese beiden Zeilen auf eine Zeile neu geschrieben werden und zum anderen, dass dies mit Hilfe einer for - schleife bewerkstelligt wird.

Mein Versuch:

Code:
for /f "eol=# tokens=1,2,3,4 delims==." %%f in (MAClogs.tmp) DO (
	if %%f==141 set IPtmp=%%f.%%g.%%h.%%i
	if "%%f"=="    MAC Adresse " echo.%IPtmp%; MAC Adresse = %%g >> IPMAC.tmp
	)

Das Problem ist nun, dass man innerhalb einer Schleife zwar Variablen setzen kann, aber diese anscheinend im gleichen Durchgang noch nicht wieder ausgegeben werden können. Hat jemand eine Idee?
 
setlocal ENABLEDELAYEDEXPANSION, dann kannst du innerhalb von Schleifen mit !var! auf Variablen zugreifen.
 
Hi, danke erst mal für den Tip, es klappt aber leider noch immer nicht. Hab auch versucht im Internet eine Erklärung für die Bedeutung des setlocal Befehls zu finden, um ihn zu verstehen. Bin aber leider auf nichtts gestoßen.

Also hier der veränderte Code:
Code:
@echo on

setlocal ENABLEDELAYEDEXPANSION

set counter=0

for /f "eol=# tokens=1,2,3,4 delims==." %%f in (MAClogs.tmp) DO (
	set /a counter=%counter%+1
	if %%f==141 set IPtmp=%%f.%%g.%%h.%%i
	if "%%f"=="    MAC Adresse " echo.%IPtmp%; MAC Adresse = %%g >> MAClogs2.tmp
	)

Die MAC-Adresse wird übertragen, vor dem Semikolon findet sich aber keine IP-Adresse. Wenn man die Variable direkt nach dem setzen ausgeben lässt, tut sich auch nichts. Wie ihr vieleicht gesehen habt, habe ich außerdem versucht eine Laufzahl zu setzen (counter), die die Anzahl der Schleifenvorgänge mitzählen soll. Sie ist stehts bei 0. obwohl der set Befehl jedes Mal ausgeführt wird. Letztendlich ist das das gleiche Problem.
 
Wie gesagt, innerhalb von Schleifen musst du auf mit set erstellte Variablen, mittels !var! zugreifen.
 
Zurück
Oben