c20082005
Goto Top

Batch: Aktuellen Verzeichnisnamen einer Pfadangabe auslesen

Hallo,

ich bekomme folgendes (ich vermute simples) Problem nicht gelöst:

Ich habe eine Pfadangabe in einer Variablen, z.B.: "c:\a\b\c\d", wobei die Verzeichnistiefe variabel ist (es könnte auch "c:\a\b" heißen).
Wie bekomme ich den letzten Verzeichnisnamen ausgelesen - also in dem Beispiel das "d"?

Ich könnte ja
for /f "tokens=5 delims=\" %%j in ("%conv_pfad%") do set verz1=%%j
wählen, jedoch würde bei längerem/kürzerem Pfad ein falsches Ergebnis herauskommen.

Könnt ihr mir helfen?

Gruß

Klaus

Content-Key: 288910

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

Printed on: April 24, 2024 at 03:04 o'clock

Member: eldorado1
eldorado1 Nov 20, 2015 at 10:09:16 (UTC)
Goto Top
Hallo

habe es jetzt nicht ausprobiert aber müsste so funktionieren

For /F "tokens=1-5 delims=\" %%A IN ("%conv_pfad%") DO (  
    set verz1=%%A
)

Gruß Eldorado
Member: c20082005
c20082005 Nov 20, 2015 at 13:34:27 (UTC)
Goto Top
Hallo,

danke für die Antwort.
Leider ist das nicht erfolgreich.
Die "For-Schleife" weist dem ersten Teil die Variable %%A , dem zweiten %%B usw zu. Somit wird der Variablen immer der erste Teil zugewiesen.


Ich habe es anders (ungelenk) gelöst:

for /f "tokens= 3,4,5,6 delims=\" %%j in ("%conv_pfad%") do set verz1=%%j&set verz2=%%k&set verz3=%%l&set verz4=%%m  
if "%verz4%" neq "" set conv_verz="%verz4%"&goto conv_start  
if "%verz3%" neq "" set conv_verz="%verz3%"&goto conv_start  
if "%verz2%" neq "" set conv_verz="%verz2%"&goto conv_start  
if "%verz1%" neq "" set conv_verz="%verz1%"&goto conv_start  


Das funktiert zwar, jedoch ist das schon sehr fehleranfällig.

Gibt es denn keine elegante Lösung?

Gruß

Klaus
Mitglied: 114757
Solution 114757 Nov 20, 2015, updated at Nov 21, 2015 at 06:30:51 (UTC)
Goto Top
Moin.
Gibt es denn keine elegante Lösung?
und ob es die gibt face-wink
for /f "delims=" %%a in ("c:\a\b\c\d") do @echo %%~nxa
Ein for /? zeigt dir die Hilfe zum Ausdruck %%~nxa ...
n = Name
x = Extension
Das mitnehmen der xtension sorgt bei Ordnernamen die einen Punkt enthalten z.B. (ordner.abcxyz), dafür das auch dieser komplett übernommen und nicht am Punkt abgehackt wird.

Gruß jodel32
Member: c20082005
c20082005 Nov 21, 2015 at 06:31:40 (UTC)
Goto Top
Perfekt!
Das, was ich gesucht habe!

Vielen Dank!