Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Ordnerpfad mit Leerzeichen auslesen

Frage Entwicklung Batch & Shell

Mitglied: barkingdog

barkingdog (Level 1) - Jetzt verbinden

04.02.2009, aktualisiert 11:36 Uhr, 6521 Aufrufe, 9 Kommentare

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 - Klicke auf das Bild, um es zu vergrößern

Beispiel für eine Fehlermeldung bei Leerzeichen im Pfad:

18e82d99d4ae7f63bf245d2eeac1baa7-fehlschlag - Klicke auf das Bild, um es zu vergrößern

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.

01.
@echo off & setlocal  
02.
set "Archiv=\\fileserver\Archiv\2007"  
03.
set "Pfad=%~1\"  
04.
dir %1\>nul 2>nul || set "Pfad=%~dp1"  
05.
for /f "tokens=2 delims=\" %%i in ("%Pfad%") do set "P=%%j"  
06.
 
07.
if exist "%Archiv%\%P%" (  
08.
 start explorer /e,"%Archiv%\%P%"  
09.
 
10.
) else (  
11.
    echo  "%Archiv%\%P%" nicht gefunden ... & echo\ & pause  
12.
)

Grüße

barkingdog
Mitglied: 60730
04.02.2009 um 11:32 Uhr
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ß
Bitte warten ..
Mitglied: qwertz
04.02.2009 um 12:15 Uhr
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:
01.
Windows Registry Editor Version 5.00 
02.
[HKEY_CLASSES_ROOT\Folder\shell\ExploreToArchiv] 
03.
@="zum Archiv 2007 wechseln ..." 
04.
[HKEY_CLASSES_ROOT\Folder\shell\ExploreToArchiv\command] 
05.
@="Explorer.exe /e,\\fileserver\Archiv\2007"
Den Code einfach als .REG-Datei speichern und Datei doppelklicken.
Bitte warten ..
Mitglied: barkingdog
04.02.2009 um 13:26 Uhr
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
Bitte warten ..
Mitglied: 60730
04.02.2009 um 13:57 Uhr
Servus,

ach "du" warst das - ich erinnere mich..

Probier es mal so - ungetestet - beachte Zeile 4

01.
@echo off & setlocal 
02.
set "Archiv=\\fileserver\Archiv\2007" 
03.
set "Pfad=%~1\" 
04.
dir "%1\">nul 2>nul || set "Pfad=%~dp1" 
05.
for /f "tokens=2 delims=\" %%i in ("%Pfad%") do set "P=%%j" 
06.
 
07.
if exist "%Archiv%\%P%" ( 
08.
 start explorer /e,"%Archiv%\%P%" 
09.
 
10.
) else ( 
11.
    echo  "%Archiv%\%P%" nicht gefunden ... & echo\ & pause 
12.
)
gruß
Bitte warten ..
Mitglied: barkingdog
04.02.2009 um 14:08 Uhr
Hallo,

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

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

Grüße

barkingdog
Bitte warten ..
Mitglied: 60730
04.02.2009 um 14:18 Uhr


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ß
Bitte warten ..
Mitglied: barkingdog
04.02.2009 um 14:28 Uhr
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
Bitte warten ..
Mitglied: qwertz
04.02.2009 um 21:32 Uhr
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:
01.
Windows Registry Editor Version 5.00 
02.
[HKEY_CLASSES_ROOT\Folder\shell\ExploreToArchiv] 
03.
@="zum Archiv 2007 wechseln ..." 
04.
[HKEY_CLASSES_ROOT\Folder\shell\ExploreToArchiv\command] 
05.
@="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
Bitte warten ..
Mitglied: barkingdog
05.02.2009 um 09:19 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Microsoft Office
gelöst Dropdownlisten in Abhängigkeit mit Leerzeichen im Namen (Datenüberprüfung) (2)

Frage von kevische zum Thema Microsoft Office ...

Batch & Shell
gelöst Appx aus Image auslesen und entfernen (9)

Frage von Markus2016 zum Thema Batch & Shell ...

Administrator.de Feedback
Bug? "m f g" (ohne Leerzeichen) wird auch in URL ersetzt (4)

Frage von emeriks zum Thema Administrator.de Feedback ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...