moonxit
Goto Top

mehrere Variable aus Datei auslesen

Hallo zusammen

Mein Ziel:

Ich habe ein Programm geschrieben, dass Daten in eine Konfiguartionsdatei reinschreibt. Nun möchte ich, dass mein Batchfile, dass ich zum Snapshoten brauche diese Datei ausliest und den Wert der Variablen ausliest.

Ausgangslage:

Momentan habe ich ein File das Test.txt heisst, die auf C:\ liegt. In dieser Datei stehen zwei Zeilen mit zwei Werten z.B.

- PC01
- PC02

Dann habe ein Patchfile, dass Textfile auslesen soll. Dabei habe ich beim googeln den folgenden Code gefunden.

for /f %%a IN (C:\test.txt) do set VMNAME1= %%a
for /f %%b IN (C:\test.txt) do set VMNAME2= %%b

Problem:

Leider passiert es, dass nun die beide Batchvariablen den Wert PC02 haben. Allerdings möchte ich, dass die Variable VMNAME1z.B. den Wert PC01 hat und VMNAME2 z.B. PC02 (Die beiden PCxx Werte sind variablen beschrieben vom Ursprungsprogramm). Weiss jemand, wie ich die Variablen korrekt auszulesen habe.

danke

MOONXIT

Content-ID: 122868

Url: https://administrator.de/contentid/122868

Ausgedruckt am: 01.11.2024 um 02:11 Uhr

Biber
Biber 17.08.2009 um 12:38:25 Uhr
Goto Top
Moin MoonXIT,

wenn jede Zeile in eine andere Variable "übertragen" werden soll, dann musst Du es nach diesem Muster machen:

@echo off & setlocal
for /f %%a IN (C:\test.txt) do call :SetMirWatt %%a
goto :eof

:SetMirWatt 
if not defined VMNAME1 set "VMNAME1=%1" & goto :eof  
if not defined VMNAME2 set "VMNAME2=%1" & goto :eof  
:: ...
if not defined VMNAMEn set "VMNAMEn=%1" & goto :eof  

Okay, wenn Du in der Praxis ja nun keine 200 VMs nutzen wirst, dann ist es vertretbar und viel wichtiger: halbwegs wartbar.

Grüße
Biber
[Edit] Tippfehlerberichtigung siehe unten ("call SetMirWatt:%%a). [/Edit]
[Edit ii] Tippfehlerberichtigung ii siehe unten ("In Zeile 8 dann bitte noch 2 davon. ") face-wink [/Edit ii]
MoonXIT
MoonXIT 17.08.2009 um 13:06:42 Uhr
Goto Top
Leider kommt bei mir immer :

Der Befehl "setmirwatt" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

was habe ich falsch gemacht??

Ich habe deinen Befehl 1:1 kopiert.
MoonXIT
MoonXIT 17.08.2009 um 13:16:23 Uhr
Goto Top
ok habs kapiert: hatte einen kleinen Fehler im Code unter:

for /f %%a IN (C:\test.txt) do call SetMirWatt %%a

muss bei SetMirWatt nein ein : eingebaut werden.

also:

for /f %%a IN (C:\test.txt) do call :SetMirWatt %%a
Biber
Biber 17.08.2009 um 15:19:12 Uhr
Goto Top
Uuuupps, sorry, MoonXIT,

bei mehrzeiligen Batchdateien habe ich oft in den unterschiedlichsten Zeilen solche Tippfehler....

Ich trage den Doppelpunkt oben in der Skizze nach.

Grüße
Biber
81825
81825 17.08.2009 um 15:24:07 Uhr
Goto Top
Zitat von @Biber:
Ich trage den Doppelpunkt oben in der Skizze nach.

In Zeile 8 dann bitte noch 2 davon. face-wink