barkingdog
Goto Top

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:

dbbc162b9dfefea73842df085362fc6d-menue

Beispiel für eine Fehlermeldung bei Leerzeichen im Pfad:

18e82d99d4ae7f63bf245d2eeac1baa7-fehlschlag

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

Content-Key: 108016

Url: https://administrator.de/contentid/108016

Printed on: April 19, 2024 at 11:04 o'clock

Mitglied: 60730
60730 Feb 04, 2009 at 10:32:22 (UTC)
Goto Top
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ß
Member: qwertz
qwertz Feb 04, 2009 at 11:15:52 (UTC)
Goto Top
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:
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.
Member: barkingdog
barkingdog Feb 04, 2009 at 12:26:38 (UTC)
Goto Top
Hallo,

den Code hatte ich dummerweise vergessen, ohne den kann mir natürlich nicht viel geholfen werden.
Also die Anführungszeichen sind doch so weit richtig gesetzt oder ?


So dann möchte ich das Problem nochmal näher erläutern, war vielleicht wirklich etwas kurz. Es gibt hier einen fileserver auf dem Fileserver gibt es auch ein Archiv, die Ordnerstruktur des Archives gibt es aber auch noch für das aktuelle Jahr. Allerdings befinden sich die Daten wenn sie gerade nicht gebraucht werden im Archiv. Bin ich jetzt in
so einem leeren Ordner gelandet möchte ich ins Archiv wechseln und die Daten von da anschauen oder sie vielleicht auch in den aktuellen Ordner kopieren, dazu diese Tool. Ich hoffe das macht das ganze verständlicher.
Von daher muss ich doch auch den aktuellen Pfad ermitteln oder etwa nicht?
Die Geschichte mit den Variabln wusste ich jetzt noch gar nicht, werde ich gleich mal nach schauen.

Also wenn es auch irgendwie einfacher geht habe ich damit kein Problem.

Danke für diese Registry-Datei, doch wenn ich das jetzt richtig sehe, dann würde sie mich immer ins gleiche Verzeichnis bringen und das ist nicht gewünscht. Hinzu kommt noch dass sie bei mir nicht funktioniert.

Grüße

barkingdog
Mitglied: 60730
60730 Feb 04, 2009 at 12:57:23 (UTC)
Goto Top
Servus,

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ß
Member: barkingdog
barkingdog Feb 04, 2009 at 13:08:47 (UTC)
Goto Top
Hallo,

ja "ich" war das - ich erinnere mich auch an dich face-smile

Probiert, ohne Erfolg. Ich bekomme da nicht den vollständigen Pfad, weil sobald eine Leerzeile kommt
der Rest ignoriert wird.

Grüße

barkingdog
Mitglied: 60730
60730 Feb 04, 2009 at 13:18:39 (UTC)
Goto Top
face-wink

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ß
Member: barkingdog
barkingdog Feb 04, 2009 at 13:28:51 (UTC)
Goto Top
Hallo,

hatte ich mir anfangs auch überlegt, aber weil der Thread bereits gelöst war dachte ich dann doch,
das es sinnvoller ist einen neuen Thread zu eröffnen.

Nun ja ich habe das "@echo off" am anfang raus genommen, habe in Zeile 9 eine Pause eingefügt allerdings
hat auch das nicht geholfen. Natürlich wäre Bastla der "beste" Ansprechpartner, aber es wird doch auch noch andere geben die vielleicht etwas wissen.

Gruß

barkingdog
Member: qwertz
qwertz Feb 04, 2009 at 20:32:49 (UTC)
Goto Top
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:
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
Member: barkingdog
barkingdog Feb 05, 2009 at 08:19:50 (UTC)
Goto Top
Hallo,

vielen Dank für eure Hilfe. Das mit dem Registry-Schlüssel hatte ich gar nicht bedacht... nach dem hinzufügen
der beiden Anführungszeichen klappt es. Nur blöd dass sie jetzt den fileserver umstruktieren wollen. Nun ja dennoch nochmals vielen Dank und die alternative Lösung werde ich auch mal ausprobieren.

Viele Grüße

barkingdog