43547

Informationen aus Datei fortlaufend in unterschiedliche Variable einlesen!?

Hallo,

folgende Aufgabenstellung habe ich momentan zu lösen: Es gibt eine Datei namens 'LW_C.drv'. Der Inhalt sieht folgermaßen aus:

LW_100=C:\meinprogramm\test
LW_101=C:\nocheinprogramm\test2
LW_102 ...
.
.
.
LW_199=D:\xyz\


Per for-Schleife innerhalb einer batch soll zeilenweise der vor dem = -Zeichen stehende Teil als Variablenname verwendet/deklariert (z.B. LW_120) werden, als Inhalt der Variable soll der Teil hinter dem = -Zeichen genutzt werden. Es soll so lange fortgefahren werden, bis das Ende der Datei erreicht ist. Sprich die Variable selbst muss sich bei jedem Durchlauf der for-Schleife ändern.
Ich hab schon einen Lösungsansatz, jedoch scheitert es unter anderem daran, eine Variable bei jedem Durchlauf zu ändern, also z.B. wie in C++ die Variable i hochzählen.
Wäre cool wenn Ihr einen Lösungsansatz parat hättet.

MfG
Marcel
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 51768

Url: https://administrator.de/forum/informationen-aus-datei-fortlaufend-in-unterschiedliche-variable-einlesen-51768.html

Ausgedruckt am: 21.05.2025 um 20:05 Uhr

Biber
Biber 15.02.2007 um 15:11:19 Uhr
Goto Top
Moin IT-KMS-Nitschke,

Demo am CMD-Prompt:
(=15:08:44  D:\temp=)
>for /f "delims== tokens=1-2" %i in (f:\temp\LW_C.drv) do @echo Set %i=%j  
Set LW_100=C:\meinprogramm\test
Set LW_101=C:\nocheinprogramm\test2

-- im Batch-
for /f "delims== tokens=1-2" %%i in (f:\temp\LW_C.drv) do Set %%i=%%j  

Gruss
Biber
43547
43547 15.02.2007 um 15:31:00 Uhr
Goto Top
Danke für deinen Vorschlag aber das scheint hier so nicht zu funktionieren. Bei jedem Durchlauf wird ein Pfad aus einer Zeile der Datei in %i geschrieben und anschließend nach %j verschoben. Aber im nächsten Durchlauf habe ich die nächste Zeile zum Ende wieder in %j und die vorherige ist verloren. Gerade das wollte ich verhindern, sprich alles was ausgelesen wurde (jede Zeile) soll in Variablen vorliegen damit ich jede Variable im Batch anschließend weiternutzen kann.
Hoffe du oder jemand anderes kann helfen.

MfG
Nitschke
bastla
bastla 15.02.2007 um 17:29:32 Uhr
Goto Top
Hallo IT-KMS-Nitschke!

Wie sollte es denn weitergehen, wenn Du Dein Array aufgebaut hast? Lässt sich der weitere Verlauf nicht direkt als Unterprogramm in der Schleife durchführen, also in der Art:
for /f "delims== tokens=1-2" %%i in (f:\temp\LW_C.drv) do call :Process "%%i" "%%j"  
goto :eof
:Process
echo Für %~1 wurde Wert %~2 gelesen ...
goto :eof

Grüße
bastla
bastla
bastla 15.02.2007 um 22:30:51 Uhr
Goto Top
... oder, falls Du anhand der Nummer zugreifen willst, ginge das zB so:
set /p lNr=Laufende Nummer_
set Drv=
for /f "delims== tokens=2" %%i in ('findstr /b /i "LW_%lNr%=" f:\temp\LW_C.drv') do set "Drv=%%i"  
echo Zu %lNr% wurde folgender Eintrag gefunden: %Drv%
Hier wurde bewusst nur noch der Teil hinter dem ersten "=" (mit "tokens=2") gelesen.

Grüße
bastla
Biber
Biber 16.02.2007 um 09:38:29 Uhr
Goto Top
Ich weiss nich', bastla,

ich denke immer noch noch, dass IT_KMS-Nitschke die zuerst gepostete Variante missverstanden hat.
Bei Deiner letzten (handwerklich richtigen) Variation des Themas kommt doch inhaltllich nichts anderes heraus...

@43547:
Bitte nochmal am CMD-Prompt anschauen:
>for /f "delims== tokens=1-2" %i in (LW_C.drv) do @Set %i=%j  
---und dann bitte mit "Set LW_ " ansehen, welche Variablen da sind:  
>Set LW_
----- es sollte passieren die Ausgabe:
LW_100=C:\meinprogramm\test
LW_101=C:\nocheinprogramm\test2
....

Gruss
Biber
bastla
bastla 16.02.2007 um 09:52:06 Uhr
Goto Top
@Biber

Full ACK, wobei ich mich aber immer noch frage, was er dann mit den ganzen Variablen anstellen will - daher meine Varianten zur direkten Verarbeitung per Schleife bzw für Random-Zugriff ...

Grüße
bastla
Biber
Biber 10.04.2007 um 19:37:18 Uhr
Goto Top
Tja.... den Beitrag kann ich wohl auch dichtmachen.... oder bewegt sich hier noch etwas?

Gruss Biber
43547
43547 11.04.2007 um 11:29:10 Uhr
Goto Top
ja entschludige... Erfolgreich abgeschlossen... face-smile danke nochmal