Weitergabe von Variablen in for-Schleifen
Hallo,
Ich versuche HTML Dateien in PDFs umzuwandeln (dies funktioniert) und diese dabei nach Teilen dieser HTML Datei umzubenennen (funktioniert nicht).
Leider schaffe ich es nicht, dass Variable "datei" an :filiale und :zahlart weitergegeben wird, genauso wie "varF" und "varZ" im Hauptteil weiterverwendet werden können.
Die einzelnen Programmteile für sich allein funktionieren.
Könnt ihr mir sagen, wo der Fehler steckt, oder wie ich es besser machen kann?
Vielen Dank für eure Mühe.
Ich versuche HTML Dateien in PDFs umzuwandeln (dies funktioniert) und diese dabei nach Teilen dieser HTML Datei umzubenennen (funktioniert nicht).
Leider schaffe ich es nicht, dass Variable "datei" an :filiale und :zahlart weitergegeben wird, genauso wie "varF" und "varZ" im Hauptteil weiterverwendet werden können.
Die einzelnen Programmteile für sich allein funktionieren.
for /r %%v in (*.html) do (
call :filiale
call :zahlart
"P:\Program Files\wkhtmltopdf\bin\wkhtmltopdf" %%v %%f_%%z_%%~nv.pdf
)
pause
:: Set var=
goto :eof
~~~
:setvarFixLine
If %cnt%==%1 Set "Var=%~2"
Set /a "cnt+=1"
goto :eof
:filiale
Set /a "cnt=1"
Set /a "n=26"
for /F "Tokens=*" %%i in (%%v) do call :setvarFixLine %n% "%%i"
set Var=%Var:~0,-4%
set f=%Var:~17%
Echo n-te Zeile, n=%n%: [%f%]
goto :eof
:zahlart
Set /a "cnt=1"
Set /a "n=27"
for /F "Tokens=*" %%i in (%%v) do call :setvarFixLine %n% "%%i"
set Var=%Var:~0,-4%
set z=%Var:~9%
Echo n-te Zeile, n=%n%: [%z%]
goto :eof
Könnt ihr mir sagen, wo der Fehler steckt, oder wie ich es besser machen kann?
Vielen Dank für eure Mühe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 270166
Url: https://administrator.de/forum/weitergabe-von-variablen-in-for-schleifen-270166.html
Ausgedruckt am: 23.04.2025 um 17:04 Uhr
1 Kommentar
Hallo MFJust.
Abhilfe schafft die "Verzögerte Variablenerweiterung". Aktiviert wird sie per
Die Syntax für Umgebungsvariablen ändert sich dahingehend, dass die umschließenden Prozentzeichen durch Ausrufezeichen ersetzt werden.
ungetestet:

Grüße
rubberman
Könnt ihr mir sagen, wo der Fehler steckt
Das sind gleich mehrere. In Zeile 7 wären %%f und %%z nicht existierende FOR Variablen. Wenn schon, dann %f% und %z%. Aber auch das wird nicht funktionieren, da Umgebungsvariablen innerhalb einer Kommandozeile oder eines (in Klammern eingeschlossenen) Blocks von Kommandozeilen, nur einmal zum Wert expandiert wird, und zwar noch bevor die Zeile / der Block ausgeführt wird. Der Rumpf deiner FOR /R Schleife ist so ein Block.Abhilfe schafft die "Verzögerte Variablenerweiterung". Aktiviert wird sie per
setlocal EnableDelayedExpansion
Die Syntax für Umgebungsvariablen ändert sich dahingehend, dass die umschließenden Prozentzeichen durch Ausrufezeichen ersetzt werden.
ungetestet:
for /r %%v in (*.html) do (
set "file=%%~v"
set "filename=%%~nv"
call :filiale
call :zahlart
setlocal EnableDelayedExpansion
"P:\Program Files\wkhtmltopdf\bin\wkhtmltopdf" "!file!" "!f!_!z!_!filename!.pdf"
endlocal
)
oder wie ich es besser machen kann
So ziemlich jede Sprache ist besser um HTML zu parsen, als Batch Grüße
rubberman