Pfad-String Zerlegen
Moin,
Mein Problem besteht darin, dass ich eine String-Eingabe, welche mit set /p in eine variable abgespeichert wird, zerlegen muss.
Das wäre kein Problem wenn die Eingabe immer die gleiche Struktur hätte, jedoch kann sie immer unterschiedlich sein
z.B.
Eingabe1:
"C:\Temp\Example 2\Setups\Test.exe"
Eingabe2:
"U:\Ordner1\Unterordner2\Unterordner 3\Version1.0\Setups\Test3.exe"
(Der Eingabe-String endet jedoch immer mit "....exe" und die Datei befindet sich immer im "Setups" Ordner)
Als Ergebnis bräuchte ich den Pfad des Ordners worin sich die exe befindet,den Pfad des Überordners worin sich der Ordner der exe befindet und der name der Datei mit Endung für ein weiteren Batch
z.B.
"C:\Temp\" "C:\Temp\Example 2\Setups\" "Test.exe"
MfG bithunter
Mein Problem besteht darin, dass ich eine String-Eingabe, welche mit set /p in eine variable abgespeichert wird, zerlegen muss.
Das wäre kein Problem wenn die Eingabe immer die gleiche Struktur hätte, jedoch kann sie immer unterschiedlich sein
z.B.
Eingabe1:
"C:\Temp\Example 2\Setups\Test.exe"
Eingabe2:
"U:\Ordner1\Unterordner2\Unterordner 3\Version1.0\Setups\Test3.exe"
(Der Eingabe-String endet jedoch immer mit "....exe" und die Datei befindet sich immer im "Setups" Ordner)
Als Ergebnis bräuchte ich den Pfad des Ordners worin sich die exe befindet,den Pfad des Überordners worin sich der Ordner der exe befindet und der name der Datei mit Endung für ein weiteren Batch
z.B.
"C:\Temp\" "C:\Temp\Example 2\Setups\" "Test.exe"
MfG bithunter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 164210
Url: https://administrator.de/forum/pfad-string-zerlegen-164210.html
Ausgedruckt am: 20.05.2025 um 04:05 Uhr
11 Kommentare
Neuester Kommentar
Hallo bithunter und willkommen im Forum!
Unter "
Annahme dabei: Die Eingabe enthält keine (umschließenden) Anführungszeichen ...
Grüße
bastla
Unter "
for /?
" findest Du (ziemlich gegen Ende) die Möglichkeiten zur Zerlegung - für den "Überordner" könntest Du etwa so vorgehen:for %%i in ("%Pfad%\..") do echo %%~dpi
Grüße
bastla

moin,
@Biber ich will einen eigenen Counter.....ja ich weiß - selber zählen...
btw: Bitte nutze doch die Code Blöcke.
Grüße
Die Test-batch:
@echo off
@echo off
@Biber ich will einen eigenen Counter.....ja ich weiß - selber zählen...
for /f "tokens=1-3 delims=\" %a in ("%pfad%") do echo %a-%b-%c
btw: Bitte nutze doch die Code Blöcke.
Grüße
Moin bithunter,
willkommen im Forum.
Mach da nicht so'n Heckmeck drum, sondern lieber ein paar Codetags.
Heut' ist Freitag und wir essen zeitig.
Beispiel am CMD-Prompt für Anzeige Überordner [führendes ">" gehört zu meinem Prompt; nicht mit eingeben]:
Grüße
Biber
willkommen im Forum.
Mach da nicht so'n Heckmeck drum, sondern lieber ein paar Codetags.
Heut' ist Freitag und wir essen zeitig.
Beispiel am CMD-Prompt für Anzeige Überordner [führendes ">" gehört zu meinem Prompt; nicht mit eingeben]:
>set "fullfname=y:\Eigene Dateien\Altova Projects\Spelling\Lexicons\custom.tlx"
>for %i in ("%fullfName%") do @for %j in ("%~dpi\..\.") do @echo ParentDir:[%~dpj] Dir:[%~dpi] File:[%~nxi]
ParentDir:[y:\Eigene Dateien\Altova Projects\] Dir:[y:\Eigene Dateien\Altova Projects\Spelling\Lexicons\] File:[custom.tlx]
Grüße
Biber
@Biber
... wobei der Schlenker mit "\." am Ende ja reine Verzierung (Nährwert nicht feststellbar) ist ...
Grüße
bastla
... wobei der Schlenker mit "\." am Ende ja reine Verzierung (Nährwert nicht feststellbar) ist ...
den Pfad des Überordners worin sich der Ordner der exe befindet
hast wenigstens Du richtig interpretiert (also nicht wörtlich genommen) - für mich wäre das in Deinem Beispiel "y:\Eigene Dateien\Altova Projects\Spelling\" gewesen ...Grüße
bastla
Moin bastla,
stimmt, ich wollte (und bin) auf den Über-Überordner gesprungen.
Ein Ordner darunter (falls der gemeint gewesen sein sollte) wäre ja noch einfacher:
Zusammenfassend.
a) works as designed
b) mit dem zeitigen Essen könnte es noch klappen.
@bitchhunter
Haken dran und gut is'.
Grüße
Biber
stimmt, ich wollte (und bin) auf den Über-Überordner gesprungen.
Ein Ordner darunter (falls der gemeint gewesen sein sollte) wäre ja noch einfacher:
>for %i in ("%fullfName%") do @for %j in ("%~dpi\.") do @echo ParentDir:[%~dpj] Dir:[%~dpi] File:[%~nxi]
ParentDir:[y:\Eigene Dateien\Altova Projects\Spelling\] Dir:[y:\Eigene Dateien\Altova Projects\Spelling\Lexicons\] File:[custom.tlx]
Zusammenfassend.
a) works as designed
b) mit dem zeitigen Essen könnte es noch klappen.
@bitchhunter
Haken dran und gut is'.
Grüße
Biber
[OT]
@Skyemugen
oh f*ck.... da war ich schon mit einem Bein im WE....
... und jetzt stattdessen mit einem Bein im Fegefeuer...
Das liegt bestimmt nur an diesem ver###ten Umgangston, den meine ver###ten ###-Arbeitskollegen immer pflegen.
Da, denen werd ich mal die ###te ### in den ###, aber so richtig.
@bithunter
Öhmm ...sorry....
Die Kürzerei der Variablen brauchst du nicht, wenn du die Variablen so setzt:
Schönes Wochenende und viel Spass beim Was-auch-immer-jagen.
Biber
mir bitte kein Bit
[/OT]
@Skyemugen
oh f*ck.... da war ich schon mit einem Bein im WE....
... und jetzt stattdessen mit einem Bein im Fegefeuer...
Das liegt bestimmt nur an diesem ver###ten Umgangston, den meine ver###ten ###-Arbeitskollegen immer pflegen.
Da, denen werd ich mal die ###te ### in den ###, aber so richtig.
@bithunter
Öhmm ...sorry....
Die Kürzerei der Variablen brauchst du nicht, wenn du die Variablen so setzt:
.... set "dirup2=%%~dpm" & set "dir2=%%~dpl" & set "name=%%~nxl"
Schönes Wochenende und viel Spass beim Was-auch-immer-jagen.
Biber
mir bitte kein Bit
[/OT]