Variable mit Leerzeichen an andere Batchdatei übergeben
Ich möchte von der Batchdatei EINS eine Pfadangabe an die Batchdatei ZWEI übergeben.
So lange im Parameter kein Leerzeichen vorhanden ist, funktioniert auch alles.
Ist im Dateinamen oder im Pfadnamen ein Leerzeichen, wird der Parameter beim Leerzeichen abgeschnitten.
Der Teil nach dem Leerzeichen wird falsch an den nächsten Parameter übergeben.
zB
Bitte um Hilfe
Gerry
So lange im Parameter kein Leerzeichen vorhanden ist, funktioniert auch alles.
Ist im Dateinamen oder im Pfadnamen ein Leerzeichen, wird der Parameter beim Leerzeichen abgeschnitten.
Der Teil nach dem Leerzeichen wird falsch an den nächsten Parameter übergeben.
zB
set quellverz="D:\daten\muster"
set quelldat="dat ei.txt"
set zielv="\Daten\muster"
set zieldat="datei.txt"
call d:\test\zwei.bat %zielv% %zieldat% %quellverz% %quelldat%
wird in zwei.bat zu
quellverz="D:\daten\muster"
set "quelldat=dat"
set zielv="ei.txt"
set zieldat="\Daten\muster"
Bitte um Hilfe
Gerry
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 668910
Url: https://administrator.de/contentid/668910
Ausgedruckt am: 24.11.2024 um 05:11 Uhr
6 Kommentare
Neuester Kommentar
Hat ich dir eigentlich schon hier geschrieben wie man es richtig macht, aber leider überliest du hier sehr viel was man dir schreibt ...
Zwei.bat
Man sollte das Schema durchgehend beibehalten. Gerade wenn man Daten verarbeitet bei denen man nicht weiß ob sie mit oder ohne Anführungszeichen kommen (z.B. vom User übergebene auf die du keinen Einfluss hast) sollte man sie erst davon befreien um sie dann beim Vergleich oder Nutzung wieder hinzuzufügen, aber nicht zur Variable selbst, denn das gibt dann wieder Probleme wenn du Pfade zusammen setzen willst wie im Link schon beschrieben .
set "quellverz=D:\daten\muster"
set "quelldat=dat ei.txt"
set "zielv=\Daten\muster"
set "zieldat=datei.txt"
call "d:\test\zwei.bat" "%zielv%" "%zieldat%" "%quellverz%" "%quelldat%"
Zwei.bat
:: 4ten Parameter von (evt. vorh. Anführungszeichen befreien) und erst dann auch wieder mit hinzugefügten Anführungszeichen vergleichen, dann gibt es auch keine solchen Missverständnisse
if "%~4" == "" goto weiter
Ist doch logisch.
mit
erreichst du eigentlich nur das:
Deine Datei zwei.bat wird vermutlich nur 4 Parameter auswerten, sind jedoch schon zwei Parameter, also hast du ihr 5 Parameter übergeben. Du musst es also erreichen, dass der Parameter mit Anführungszeichen übergeben wird.
Näheres siehe oben von Ted
mit
call d:\test\zwei.bat %zielv% %zieldat% %quellverz% %quelldat%
erreichst du eigentlich nur das:
call d:\test\zwei.bat \Daten\muster datei.txt D:\daten\muster dat ei.txt
Deine Datei zwei.bat wird vermutlich nur 4 Parameter auswerten,
dat ei.txt
"dat ei.txt"
Näheres siehe oben von Ted
Zitat von @gerry56:
Die Parameterübergabe funktioniert, jedoch hat xcopy Probleme mit der Dateierstellung und Pfaderstellung, wenn im Dateinamen oder im Verzeichnisnamen eine Leerstelle vorhanden ist.
Die Parameterübergabe funktioniert, jedoch hat xcopy Probleme mit der Dateierstellung und Pfaderstellung, wenn im Dateinamen oder im Verzeichnisnamen eine Leerstelle vorhanden ist.
Nö kann ich nicht bestätigen, klappt hie rim Test wie erwartet einwandfrei wenn man durchgängig Pfade mit Anführungszeichen nutzt ...! Dein Skript ist fehlerhaft ...
Bitte dann Beitrag schließen.