Variable aus String wird nicht aufgelöst - Batch
Hallo
Ich stehe wieder einmal vor einem Problem, welches ich auch nach längerer Zeit nicht lösen konnte.
Hiermit wird eine csv Datei ausgelesen, wobei die erste Zeile (überschriften, beschreibungen) übersprungen wird.
Soweit, sogut. Funktioniert alles.
Das Problem ist jetzt allerdings, dass ich in der csv Datei zwingend Variablen angeben/übergeben muss, um das Programm variabel zu halten.
Eine Beispielzeile aus der csv Datei:
Benutzer;Sicherung\Benutzer;%USERPROFILE%;Dummy.csr;
Nachdem die Funktion :Start die Variablen ausgelesen hat, interpretiert der 3. Token den Wert für %SOURCE% direkt als %USERPROFILE% und nicht, wie benötigt, als C:\User\[Benutzername]
Ich hoffe, es ist einigermaßen verständlich, wo das Problem liegt und mir kann jemand helfen.
[Edit Biber] Codeformatierung [/Edit]
Ich stehe wieder einmal vor einem Problem, welches ich auch nach längerer Zeit nicht lösen konnte.
Hiermit wird eine csv Datei ausgelesen, wobei die erste Zeile (überschriften, beschreibungen) übersprungen wird.
[...]
:: Auslesen der Quell- und Zieldaten aus Datenbank
for /F "skip=1 delims=" %%I IN (%INDEX%) DO set "LINE=%%I" & Call :Start
[...]
:: Für jede Zeile in der csv Datei wird nun in mit den Tokens 1 bis x ein einzelner Wert ausgelesen und in eine Variable gespeichert.
:Start
:: Sicherungsname
for /F "tokens=1 delims=;" %%J IN ("%LINE%") DO set "JOBNAME=%%J"
:: Zielordner ohne Laufwerksangabe
for /F "tokens=2 delims=;" %%K IN ("%LINE%") DO set "TARGETPATH=%%K"
:: Quellordner ohne Umgebungsvariablen
for /F "tokens=3 delims=;" %%L IN ("%LINE%") DO set "SOURCE=%%L"
:: Name der Dummydatei zur Auswahl des Ziellaufwerks
for /F "tokens=4 delims=;" %%M IN ("%LINE%") DO set "DUMMY=%%M"
:: Einzelne Datei, optional
for /F "tokens=5 delims=;" %%N IN ("%LINE%") DO set "FILE=%%N"
[...]
goto :eof
Das Problem ist jetzt allerdings, dass ich in der csv Datei zwingend Variablen angeben/übergeben muss, um das Programm variabel zu halten.
Eine Beispielzeile aus der csv Datei:
Benutzer;Sicherung\Benutzer;%USERPROFILE%;Dummy.csr;
Nachdem die Funktion :Start die Variablen ausgelesen hat, interpretiert der 3. Token den Wert für %SOURCE% direkt als %USERPROFILE% und nicht, wie benötigt, als C:\User\[Benutzername]
Ich hoffe, es ist einigermaßen verständlich, wo das Problem liegt und mir kann jemand helfen.
[Edit Biber] Codeformatierung [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 149881
Url: https://administrator.de/forum/variable-aus-string-wird-nicht-aufgeloest-batch-149881.html
Ausgedruckt am: 22.05.2025 um 01:05 Uhr
3 Kommentare
Neuester Kommentar
Hallo ForgottenRealm!
Versuch es mit
Abgesehen davon genügt eigentlich eine "
Etwas kompakter ließe sich das auch so schreiben:
Grüße
bastla
P.S.: Findest Du nicht auch, dass als Code formatierte Batches zumindest schon mal besser aussehen?
Versuch es mit
call set "SOURCE=%%L"
Abgesehen davon genügt eigentlich eine "
for
"-Schleife:for /F "tokens=1-5 delims=;" %%J IN ("%LINE%") DO (
REM Sicherungsname
call set "JOBNAME=%%J"
REM Zielordner ohne Laufwerksangabe
call set "TARGETPATH=%%K"
REM Quellordner ohne Umgebungsvariablen
call set "SOURCE=%%L"
REM Name der Dummydatei zur Auswahl des Ziellaufwerks
call set "DUMMY=%%M"
REM Einzelne Datei, optional
call set "FILE=%%N"
)
echo %JOBNAME%_%TARGETPATH%_%SOURCE%_%DUMMY%_%FILE%
for /F "tokens=1-5 delims=;" %%J IN ("%LINE%") DO (
call set "JOBNAME=%%J" & REM Sicherungsname
call set "TARGETPATH=%%K" & REM Zielordner ohne Laufwerksangabe
call set "SOURCE=%%L" & REM Quellordner ohne Umgebungsvariablen
call set "DUMMY=%%M" & REM Name der Dummydatei zur Auswahl des Ziellaufwerks
call set "FILE=%%N" & REM Einzelne Datei, optional
)
echo %JOBNAME%_%TARGETPATH%_%SOURCE%_%DUMMY%_%FILE%
bastla
P.S.: Findest Du nicht auch, dass als Code formatierte Batches zumindest schon mal besser aussehen?