43547
Goto Top

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

Content-Key: 51768

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

Printed on: April 19, 2024 at 03:04 o'clock

Member: Biber
Biber Feb 15, 2007 at 14:11:19 (UTC)
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
Mitglied: 43547
43547 Feb 15, 2007 at 14:31:00 (UTC)
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
Member: bastla
bastla Feb 15, 2007 at 16:29:32 (UTC)
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
Member: bastla
bastla Feb 15, 2007 at 21:30:51 (UTC)
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
Member: Biber
Biber Feb 16, 2007 at 08:38:29 (UTC)
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
Member: bastla
bastla Feb 16, 2007 at 08:52:06 (UTC)
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
Member: Biber
Biber Apr 10, 2007 at 17:37:18 (UTC)
Goto Top
Tja.... den Beitrag kann ich wohl auch dichtmachen.... oder bewegt sich hier noch etwas?

Gruss Biber
Mitglied: 43547
43547 Apr 11, 2007 at 09:29:10 (UTC)
Goto Top
ja entschludige... Erfolgreich abgeschlossen... face-smile danke nochmal