Ordnerpfad mit Leerzeichen auslesen
Hallo,
ich habe einen Eintrag in meinem Kontextmenü mittels dem ich vom aktuellen Verzeichnis in ein anderes wechseln kann, allerdings besteht das Problem, dass
ich bei Ordnern mit Leerzeichen nicht den gesamten Pfad ausgelesen bekomme. Im Anhang zwei Bilder um das Ganze nochmals zu verdeutlichen.
Kontextmenü mit dem Eintrag "Archiv 2007" mittels dem ich ins Archiv wechseln kann:
Beispiel für eine Fehlermeldung bei Leerzeichen im Pfad:
Statt "Neuer Ordner", hat er nur "Neuer" genommen und den Rest abgeschnitten. Ich habe mich schon selber bemüht eine for-Schleife zu konstruieren, allerdings habe ich wohl Syntaxfehler gemacht, weil das cmd-Fenster gleich weg war. Wäre nett wenn wir jemand etwas helfen könnte.
Gesucht habe ich auch schon nach dem Problem, allerdings konnte ich die Lösungen nicht auf mein Problem anwenden.
//Edit
Ach den Code den hatte ich ganz vergessen, tschuldigung.
Grüße
barkingdog
ich habe einen Eintrag in meinem Kontextmenü mittels dem ich vom aktuellen Verzeichnis in ein anderes wechseln kann, allerdings besteht das Problem, dass
ich bei Ordnern mit Leerzeichen nicht den gesamten Pfad ausgelesen bekomme. Im Anhang zwei Bilder um das Ganze nochmals zu verdeutlichen.
Kontextmenü mit dem Eintrag "Archiv 2007" mittels dem ich ins Archiv wechseln kann:
Beispiel für eine Fehlermeldung bei Leerzeichen im Pfad:
Statt "Neuer Ordner", hat er nur "Neuer" genommen und den Rest abgeschnitten. Ich habe mich schon selber bemüht eine for-Schleife zu konstruieren, allerdings habe ich wohl Syntaxfehler gemacht, weil das cmd-Fenster gleich weg war. Wäre nett wenn wir jemand etwas helfen könnte.
Gesucht habe ich auch schon nach dem Problem, allerdings konnte ich die Lösungen nicht auf mein Problem anwenden.
//Edit
Ach den Code den hatte ich ganz vergessen, tschuldigung.
@echo off & setlocal
set "Archiv=\\fileserver\Archiv\2007"
set "Pfad=%~1\"
dir %1\>nul 2>nul || set "Pfad=%~dp1"
for /f "tokens=2 delims=\" %%i in ("%Pfad%") do set "P=%%j"
if exist "%Archiv%\%P%" (
start explorer /e,"%Archiv%\%P%"
) else (
echo "%Archiv%\%P%" nicht gefunden ... & echo\ & pause
)
Grüße
barkingdog
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 108016
Url: https://administrator.de/contentid/108016
Ausgedruckt am: 26.11.2024 um 16:11 Uhr
9 Kommentare
Neuester Kommentar
Servus,
eine For Schleife kann man vielleicht sogar auch dazu mißbrauchen, aber sinnvoller und schneller wäre sehr wahrscheinlich zwei simple Anführungszeichen vor und hinter %1 - oder wie auch immer dein - nicht mitgeschicktes - Kontektmenüaufbohrendes Script den Ordner erkennt.
Aber das ist Rätselraten auf gut Glück. Deine Bilder sind leider nicht so aussagekräftig, wie der Code - der dahinter steht
Und da der fehlt - wie soll dir dann jemand helfen?
Gruß
eine For Schleife kann man vielleicht sogar auch dazu mißbrauchen, aber sinnvoller und schneller wäre sehr wahrscheinlich zwei simple Anführungszeichen vor und hinter %1 - oder wie auch immer dein - nicht mitgeschicktes - Kontektmenüaufbohrendes Script den Ordner erkennt.
Aber das ist Rätselraten auf gut Glück. Deine Bilder sind leider nicht so aussagekräftig, wie der Code - der dahinter steht
Und da der fehlt - wie soll dir dann jemand helfen?
Gruß
Hallo,
ich verstehe dein Problem nicht ganz.
Ich vermute mal, du möchtest lediglich von einem Ordner in einen anderen fest definierten Ordner wechseln.
Also wozu dann den aktuellen Pfad ermitteln ?
Da zwischenzeitlich gerade dein Code reinkam ...
Meines Wissens werden Parameter, die an ein Dos-Script übergeben werden, immer am Leerzeichen getrennt.
D.h.: der Rest des Pfades steht dann in den Variablen %2 %3 %4 ...
Es ist ja auch nicht vorhersehbar, wieviele Leerzeichen der Pfad tatsächlich hat.
Aber: Wozu den aktuellen Ordner ermitteln und den Umweg über das DOS-Script?
Hier mal eine Registry-Datei, die das gewünschte von sich aus macht:
Den Code einfach als .REG-Datei speichern und Datei doppelklicken.
ich verstehe dein Problem nicht ganz.
Ich vermute mal, du möchtest lediglich von einem Ordner in einen anderen fest definierten Ordner wechseln.
Also wozu dann den aktuellen Pfad ermitteln ?
Da zwischenzeitlich gerade dein Code reinkam ...
Meines Wissens werden Parameter, die an ein Dos-Script übergeben werden, immer am Leerzeichen getrennt.
D.h.: der Rest des Pfades steht dann in den Variablen %2 %3 %4 ...
Es ist ja auch nicht vorhersehbar, wieviele Leerzeichen der Pfad tatsächlich hat.
Aber: Wozu den aktuellen Ordner ermitteln und den Umweg über das DOS-Script?
Hier mal eine Registry-Datei, die das gewünschte von sich aus macht:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Folder\shell\ExploreToArchiv]
@="zum Archiv 2007 wechseln ..."
[HKEY_CLASSES_ROOT\Folder\shell\ExploreToArchiv\command]
@="Explorer.exe /e,\\fileserver\Archiv\2007"
Den Code einfach als .REG-Datei speichern und Datei doppelklicken.
Servus,
ach "du" warst das - ich erinnere mich..
Probier es mal so - ungetestet - beachte Zeile 4
gruß
ach "du" warst das - ich erinnere mich..
Probier es mal so - ungetestet - beachte Zeile 4
@echo off & setlocal
set "Archiv=\\fileserver\Archiv\2007"
set "Pfad=%~1\"
dir "%1\">nul 2>nul || set "Pfad=%~dp1"
for /f "tokens=2 delims=\" %%i in ("%Pfad%") do set "P=%%j"
if exist "%Archiv%\%P%" (
start explorer /e,"%Archiv%\%P%"
) else (
echo "%Archiv%\%P%" nicht gefunden ... & echo\ & pause
)
gruß
nimm mal das @echo off am anfang raus, füghe an Zeile 9 ein Pause ein und probier es nochmal.
Du hättest die Frage eigentlich auch direkt an deinen alten Beitrag hängen können, denn der Code stammt von Bastla und wenn nicht er, wer kann dir sonst weiterhelfen, ohne eine Struktur aufzubauen.
Gruß
Hallo barkingdog,
du hast recht. Die REG-Datei würde immer nur in das selbe Verzeichnis wechseln. Dein Problem war zu dem Zeitpunkt auch nicht so richtig klar. Leider habe ich wiedermal die Maskierung vergessen. Damit es funktioniert muss die letzte Zeile wie folgt geändert werden:
Nun zu deiner Lösung.
TimoBeil hat recht, das da zwei simple Anführungszeichen fehlen. Jedoch nicht im Script sondern schon beim Aufruf im Kontextmenü. Ändere den entsprechenden Registry-Schlüssel in deinem Kontextmenü so ab das deiner Batchdatei der Parameter "%1" statt %1 übergeben wird. Dann klappt es auch mit Leerzeichen in den Pfaden.
Viele Grüsse
du hast recht. Die REG-Datei würde immer nur in das selbe Verzeichnis wechseln. Dein Problem war zu dem Zeitpunkt auch nicht so richtig klar. Leider habe ich wiedermal die Maskierung vergessen. Damit es funktioniert muss die letzte Zeile wie folgt geändert werden:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Folder\shell\ExploreToArchiv]
@="zum Archiv 2007 wechseln ..."
[HKEY_CLASSES_ROOT\Folder\shell\ExploreToArchiv\command]
@="Explorer.exe /e,\\\\fileserver\\Archiv\\2007"
Nun zu deiner Lösung.
TimoBeil hat recht, das da zwei simple Anführungszeichen fehlen. Jedoch nicht im Script sondern schon beim Aufruf im Kontextmenü. Ändere den entsprechenden Registry-Schlüssel in deinem Kontextmenü so ab das deiner Batchdatei der Parameter "%1" statt %1 übergeben wird. Dann klappt es auch mit Leerzeichen in den Pfaden.
Viele Grüsse