Batch hat probleme mit Leerzeichen bei Prozent
Batchdatei kann keine Leerzeichen verarbeiten...
Hallo
Ich habe eine Batch Datei, erstellt von Lotpings, die ein kleines Problem hat.
Der Funktion der Batchdatei ist folgende: Beim oeffnen einer .dat Datei wird diese in einen Temporaeren Ordner kopiert, umbenannt in .html und geoeffnet.
Dies funktioniert auch wunderfein. Nur leider funktioniert dies NUR, wenn der Pfad zur Batchdatei an einem Stueck ohne Leerzeichen ist. Sobald Ich die Datei unter einem Pfad mit Leerzeichen benuetze kommt der Fehler das er die Datei nicht finden kann. Als Variable wird "%~1" genutzt. Als Ausgabe kommt dann: "C:\Dokumente" statt C:\Dokumente und Einstellungen\......
Wie ist es machbar das es auch mit Leerzeichen klappt? Mit Anfuehrungszeichen habe ich dies bereits versucht.
Freundliche Gruesse
Hallo
Ich habe eine Batch Datei, erstellt von Lotpings, die ein kleines Problem hat.
Der Funktion der Batchdatei ist folgende: Beim oeffnen einer .dat Datei wird diese in einen Temporaeren Ordner kopiert, umbenannt in .html und geoeffnet.
Dies funktioniert auch wunderfein. Nur leider funktioniert dies NUR, wenn der Pfad zur Batchdatei an einem Stueck ohne Leerzeichen ist. Sobald Ich die Datei unter einem Pfad mit Leerzeichen benuetze kommt der Fehler das er die Datei nicht finden kann. Als Variable wird "%~1" genutzt. Als Ausgabe kommt dann: "C:\Dokumente" statt C:\Dokumente und Einstellungen\......
Wie ist es machbar das es auch mit Leerzeichen klappt? Mit Anfuehrungszeichen habe ich dies bereits versucht.
Freundliche Gruesse
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 123845
Url: https://administrator.de/forum/batch-hat-probleme-mit-leerzeichen-bei-prozent-123845.html
Ausgedruckt am: 28.12.2024 um 01:12 Uhr
24 Kommentare
Neuester Kommentar
Hallo Sebel1,
wenn Du Wildcards benutzt solltest Du eventuell auch die Anführungszeichen drumrum setzen. Das gilt auch für die verwendung in anderen Befehlen.
Von Irgenwo musst Du ja den Parameter Übergeben vllt liegt da der Fehler
Schau mal nach ob irgendwo die Anführungzeichen fehlen
Gruß Phil
Als Variable wird "%~1" genutzt. Als Ausgabe kommt dann: "C:\Dokumente" statt C:\Dokumente und Einstellungen\......
bei der Uebergabe von Variablen oder Kompletten Pfaden sowie Zeichenfolgen welchen ein Leerzeichen enthalten müssen Anführungsding drumherumgebastelt werden. - Welche Federfiehlatschen oder auch Gänsefüsschen gennannt werden.wenn Du Wildcards benutzt solltest Du eventuell auch die Anführungszeichen drumrum setzen. Das gilt auch für die verwendung in anderen Befehlen.
Von Irgenwo musst Du ja den Parameter Übergeben vllt liegt da der Fehler
Falsch:
IF C:\Ordner 1 == %Variable%
FOR /f %%i in ('DIR /b C:\Ordner 1') do SET neu=%%i & CALL :MARKE %%i
Richtig
IF "C:\Ordner 1" == "%Variable%"
FOR /f %%i in ('DIR /b "C:\Ordner 1"') do SET "neu=%%i" & CALL :MARKE "%%~i"
Schau mal nach ob irgendwo die Anführungzeichen fehlen
Gruß Phil
Hi sebel1,
in Deiner Zeile 06 gibst Du in der Variable wenn der Pfad oder die Datei Leerzeichen enthält das "" nochmal mit. deswegen reicht für den Move das %1 aus da die Gänsefüsschen ja enthalten sind , wenn Leerzeichen drin sind.
MOVE Bennent die Datei auch gleich mit um....
Gruß Phil
in Deiner Zeile 06 gibst Du in der Variable wenn der Pfad oder die Datei Leerzeichen enthält das "" nochmal mit. deswegen reicht für den Move das %1 aus da die Gänsefüsschen ja enthalten sind , wenn Leerzeichen drin sind.
MOVE Bennent die Datei auch gleich mit um....
:: DatOpener ::::::::::::::::::::::::::::::::::::::::::::::::::
If "%~1"=="" goto :SelfInstall
Set Dest=c:\temp
if Not Exist "%Dest%\" MD "%Dest%\"
Move %1 "%Dest%\%~n1.html"
Start "" "%Dest%\%~n1.html"
pause
goto :EOF
:SelfInstall
(assoc .dat=DatOpener)||(echo Admin-Rechte notwendig! &Pause&Exit /B)
ftype DatOpener="%%comspec%%" /C "%~f0" %%L
pause
:: DatOpener ::::::::::::::::::::::::::::::::::::::::::::::::::
Gruß Phil
Hi, bastla,
Aus dem Nichts. Das wird für den Shell\open\command - Eintrag als Parameter "%L" benötigt.
Bei mir funktioniert Lords Script problemlos, auch vom Desktop
Edit: Nee, war gelogen.
Aus dem Nichts. Das wird für den Shell\open\command - Eintrag als Parameter "%L" benötigt.
Bei mir funktioniert Lords Script problemlos, auch vom Desktop
Edit: Nee, war gelogen.
Hi, sebel1
@bastla
Der Parameter "%L" hat eine besondere Bedeutung, welche, ist mir aber entfallen. Er wird allerdings in den Shell-Einträgen sehr oft verwendet.
welches Script meinst du mit "Lords Script"? Dieses von LotPings(anderer Kosename?)
Lot = Lord of the .... @bastla
Der Parameter "%L" hat eine besondere Bedeutung, welche, ist mir aber entfallen. Er wird allerdings in den Shell-Einträgen sehr oft verwendet.
Letzteres.
Die DatOpener.cmd darf nicht selbst auf dem Desktop liegen, sondern muss in einem Pfad residieren, der keine Leerzeichen enthält.
Die Zeile 13 in deinem Script muss wie folgt geändert werden:
Danach die Datopener einmal aufrufen.
Dann klappt es auch mit dem Aufruf einer Datei vom Desktop.
Die DatOpener.cmd darf nicht selbst auf dem Desktop liegen, sondern muss in einem Pfad residieren, der keine Leerzeichen enthält.
Die Zeile 13 in deinem Script muss wie folgt geändert werden:
ftype DatOpener="%%comspec%%" /C %~f0 "%%1"
Danach die Datopener einmal aufrufen.
Dann klappt es auch mit dem Aufruf einer Datei vom Desktop.
Eigentlich ja, faktisch nicht.
Du kannst dir ja mit %cmdcmdline% mal ansehen, dass die Parameter offenbar korrekt übergeben werden (egal, ob als %L oder %1 definiert), allerdings kommt CMD selbst wohl damit nicht klar: %1 = Dokumente, % 2 = und und Rest gipsnich.
Du kannst dir ja mit %cmdcmdline% mal ansehen, dass die Parameter offenbar korrekt übergeben werden (egal, ob als %L oder %1 definiert), allerdings kommt CMD selbst wohl damit nicht klar: %1 = Dokumente, % 2 = und und Rest gipsnich.
@bastla
Ja. Im Moment habe ich gerade ausgetestet, ob der angelegte Standard-Wert als Datentyp REG_EXPAND_SZ dafür verantwortlich ist. Wenn man den in REG_SZ ändert, funktioniert auch der lange Pfad mit Spaces, allerdings erst, wenn man openWithProgID einmal ausgeführt und bestätigt hat. Alles sehr merkwürdig. Pfad ohne Leerzeichen ist einfacher. *gg
Ja. Im Moment habe ich gerade ausgetestet, ob der angelegte Standard-Wert als Datentyp REG_EXPAND_SZ dafür verantwortlich ist. Wenn man den in REG_SZ ändert, funktioniert auch der lange Pfad mit Spaces, allerdings erst, wenn man openWithProgID einmal ausgeführt und bestätigt hat. Alles sehr merkwürdig. Pfad ohne Leerzeichen ist einfacher. *gg
Das hätte ich vielleicht auch mal aufrufen und lesen sollen, dann hätte ich mir die Tests sparen können.
Wenn man das allerdings jetzt weiterspinnt, dürfte es dann ja mit dem geänderten Datentyp REG_SZ auch nicht funktionieren. Tut es aber.
Nun gut, egal, Ablage 13 und Gruß an Bibers rothaarige Praktikantinnen
Einer geht noch, einer geht noch rein ? *gg
Nix da, ich habe den ganzen Quatsch wieder entsorgt.
Nix da, ich habe den ganzen Quatsch wieder entsorgt.
Hallo wie funktioniert es denn wenn in der Batch
Zeile 06.
Start "" "%Dest%\%~n1.html"
mit
Start "" "" "%Dest%\%~n1.html"
getaucht wird ? Wenn Du als Zwei Parameter /C Pfad/Batchdatei
schon in im Handling beschrieben hast?
Oder Du Machst denb Mist mit der festlegung des datentypes weg und Veränderst die Batch so, das Du die Files auf die Batch ziehst. oder eine Verknüpfung der Batch. Vllt geht das mal besser...
Gruß Phil
Zeile 06.
Start "" "%Dest%\%~n1.html"
mit
Start "" "" "%Dest%\%~n1.html"
getaucht wird ? Wenn Du als Zwei Parameter /C Pfad/Batchdatei
schon in im Handling beschrieben hast?
Oder Du Machst denb Mist mit der festlegung des datentypes weg und Veränderst die Batch so, das Du die Files auf die Batch ziehst. oder eine Verknüpfung der Batch. Vllt geht das mal besser...
Gruß Phil