naefph
Goto Top

Mit Batch verschiedene Einstellungen (Variablen) aus CSV auslesen und korrekt verknüpfen (Variablen zusammenführen)

Hallo zusammen

bin "neu" hier im Forum, resp. muss einfach erst jetzt das erste mal selber was fragen, da ich sonst immer fündig geworden bin!
Das liegt wohl daran, dass das Forum TOP ist und immer sehr kompetente Antworten gefunden werden.
-> Hier schon mal ein grosses Dankeschön an aktive Nutzer wie zB. Bieber, Bastla, etc.

Ich habe einige verschiedene Batch-Anwendungen, bei denen ich gern am Anfang ein paar User-Einstellungen aus einem CSV in Variablen speichern möchte.
Dabei gibt es zum Teil Variablen die durch vorherige verknüpft sind, wie zB:
set DatenLaufwerk=E:
set DatenPfad=BildDaten\Bredar\Fixe_GTS-RT4
set DatenInput=%DatenLaufwerk%\%DatenPfad%\Temp
set Export=%DatenLaufwerk%\%DatenPfad%\Export
set Archiv=%DatenLaufwerk%\%DatenPfad%\Save
::etc...

Nun sind diese zur einfachen User-Anwendung in einer CSV-Datei abgelegt, zB:
DatenLaufwerk;E:
DatenPfad;BildDaten\Bredar\Fixe_GTS-RT4
DatenInput;%DatenLaufwerk%\%DatenPfad%\Temp
etc...

Auslesen kann ich diese bisher wie folgt:
for /f "skip=1 tokens=1-2 delims=;" %%a in (%SettingsFile%) do (  
	set %%a=%%b
	)

Leider funktioniert so die Verknüpfung der Variablen nicht korrekt. Dies kann ich beheben, indem ich vor dem Auslesen "setlocal ENABLEDELAYEDEXPANSION" und dann im CSV !var! statt %var% verwende!
So weit so gut....

...aber leider muss ich in den Einstellungen im CSV zwischen %var% und !var! unterscheiden können, da folgende Zeilen im CSV enthalten sind:
Archiv;%DatenLaufwerk%\%DatenPfad%\Save
ArchivFormat;!StandortNr!\!Datum!
Das Format wird später zur korrekten logischen Ablage von Daten verwendet! Da analysiere ich definierte Ordnerstrukturen und verwende die Ordnernamen als Variablen und lege Daten dann nach neuen gewünschten Strukturen ab. Dies funktioniert mit normal definierten Variablen (zB. set ArchivFormat=!StandortNr!\!Datum!) auch schon korrekt, indem ich DELAYEDEXPANSION erst nach dem definieren der Variablen aktiviere.

Also meine eigentliche Frage:
Findet jemand eine Lösung, die Daten aus der CSV Datei auslesen und die Variablen korrekt zu verknüpfen, ohne ENABLEDELAYEDEXPANSION zu verwenden?

PS. Ich hab noch einen zweiten Lösungsansatz versucht, der allerdings auch nicht erfolgreich war:
set /a AnzahlZeilen=0
for /f "delims=" %%a in (%SettingsFile%) do set /a AnzahlZeilen+=1  
set /a AnzahlZeilen-=1
set /a XMLcnt=0
:ReadXML
set /a XMLcnt+=1
for /f "skip=%XMLcnt% tokens=1-2 delims=;" %%a in (%SettingsFile%) do (  
	set %%a=%%b
	goto EndFOR
	)
:EndFOR
if %XMLcnt% LSS %AnzahlZeilen% goto ReadXML
echo %DatenInput%


Hoffe ich konnte mein etwas komplexeres Problem möglichst präzise und verständlich beschreiben und danke euch schon jetzt für eure Hilfe.

Liebe Grüsse Philip

Content-Key: 368544

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

Printed on: April 23, 2024 at 15:04 o'clock

Member: rubberman
Solution rubberman Mar 19, 2018 at 11:18:01 (UTC)
Goto Top
Hallo Philip

Ein
call set "%%a=%%b"
würde die gelesenen Variablen auch dann zum Wert expandieren, wenn sie in Prozentzeichen in der Datei stehen.

Steffen
Member: naefph
naefph Mar 19, 2018 at 11:54:40 (UTC)
Goto Top
Hallo Steffen

herzlichen Dank für deine rasche Antwort!

So einfach.... ich fühle mich grad... naja! Manchmal sieht man vor lauter Bäume den Wald nicht mehr...

-> Funktioniert natürlich perfekt jetzt!

Danke!! Gruss Philip
Member: rubberman
rubberman Mar 19, 2018 at 13:56:08 (UTC)
Goto Top
Wenn du dir mal meine allererste Frage hier im Forum ansiehst (findest du in meinem Profil) ... face-wink