herbst27
Goto Top

DOS BATCH Programmierung Position von Zeichen in Variable suchen und diese kürzen

Hallo

Ich hoffe dass mir jemand das DOS-Batch-Problemchen lösen kann.
Das mit der FOR-Schleife klappt bei mir nicht so wie möchte face-sad

Das Kernproblem dabei ist, dass ich Dateien in verschiedene Verzeichnisse kopieren muss.
Ich habe Pfad-Variablen, welche der Benutzer eingeben kann.
Dabei können auch Unterverzeichnisse vorkommen und Platzhalter wie * oder ?.


Beispiel 1
\abc\de\f*.*

Beispiel 2
c:\Material\Schrauben\10mm\Messing_*.*

gewünschtes Resultat:
bei Beispiel 1
\abc\de\

bei Beispiel 2
c:\Material\Schrauben\10mm\

Wenn es hilft, kann ich auch immer den kompletten Pfad liefern wie in Beispiel 2

..demnach muss ich in den beiden Beispielen die letzte Position vom Backslash "\" ermitteln und anschliessend die rechte Seite der Variable löschen.
... was mir bis anhin leider nicht gelang face-sad

Ich danke für jeden Lösungsansatz

herbst27
Kommentar vom Moderator Biber am 21.03.2011 um 18:17:39 Uhr
Beitrag verschoben von "Betriebssysteme" nach "Batch & Shell".

Content-Key: 163068

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

Ausgedruckt am: 28.03.2024 um 11:03 Uhr

Mitglied: bastla
bastla 21.03.2011 um 16:08:07 Uhr
Goto Top
Hallo herbst27 und willkommen im Forum!

Da Derartiges nicht ganz so selten benötigt wird, gibt es in CMD bereits eine passende Funktionalität:
for /f "delims=" %%i in ("%Eingabe%") do set "Pfad=%%~pi"
oder mit Laufwerk:
for /f "delims=" %%i in ("%Eingabe%") do set "Pfad=%%~dpi"
Mehr dazu ziemlich am Ende der Hilfe zu "for" ...

Grüße
bastla

P.S.: Per DOS wäre das nicht möglich gewesen - aber dazu gibt es ja die CMD-Shell ... face-wink
Mitglied: herbst27
herbst27 23.03.2011, aktualisiert am 18.10.2012 um 18:46:14 Uhr
Goto Top
Hallo bastla

Vielen Dank für deine schnelle und korrekte Lösung.
Ich war (leider nur) nahe dran.
Die Seite "Tutorial zur FOR-Schleife "
(Tutorial zur FOR-Schleife)
hatte ich komplett durchgearbeitet und dabei jeweils nicht kapiert, dass bei "Pfad=%%~pi" das i für die Variable %%i steht.

Dank deiner Lösung funktioniert mein Test-Batch:

set test1="x:\qqwweerrret\abcdef\Abc*.*"  
set test2="\qqwweerrret\abcdef\Abc*.*"  

for /f "delims=" %%A in ("%test1%") do set "Pfad1=%%~dpA"  
echo PFAD mit Laufwerk ~dp: %Pfad1%

for /f "delims=" %%A in ("%test2%") do set "Pfad2=%%~pA"  
echo PFAD ohne Laufwerk ~p: %Pfad2%

Nochmals DANKE

Grüsse aus Luzern
herbst27

[Edit Biber] Codeformatierung. [/Edit]