Batch: erweiterte Stringoperationen z.B. an Dateipfaden

Ich möchte eigentlich nur kurz festhalten, dass man sehr einfach an bestimmte Teile eines Pfadstrings kommt. Dafür gibt es in der DOS Sprache vordefinierte Operatoren. Der Aufbau ist eigentlich recht einfach. Mit einer for Schleife wird eine Variable oder auch eine Liste von Elementen abgearbeitet und mit

%[%]~[option][element]

wird der gewünschte Part angesprochen.

Am besten erklärt sich das sicher mit Beispielen:

set path=D:\Daten\Backup\test.bat

:: nur der Dateiname (ohne .ext) - die Option "~n" (Name der Datei oder des Ordners) wird angesprochen, %% weil Ausführung aus einem Script heraus, a am Ende ist das Element der for Schleife
for %%a in (%path%) do set 1=%%~na
:: -> test

:: Dateiname und Erweiterung - mehrere Optionen werden einfach aneinandergereiht, %% (Scriptausführung) "~nx" (n für Name und x für Erweiterungen), b das Schleifenelement
for %%b in (%path%) do set 1=%%~nxb
:: -> test.bat

:: Pfad ohne Datei oder letzten Ordner - d für den Laufwerksbuchstaben, p für den Pfad ohne Datei/letzten Ordner
for %%c in (%path%) do set 2=%%~dpc
:: -> D:\Daten\Backup\

:: d für den Laufwerksbuchstaben, p für den Pfad ohne Datei/letzten Ordner, n für den Namen, x für die Erweitung, was kommt bei raus??
for %%d in (%path%) do set 3=%%~dpnxd
:: -> D:\Daten\Backup\test.bat

via (gute Zusammenfassung mit Beispielen)

Bei der direkten Eingabe in die CMD also ein Prozentzeichen weniger:

for %c in (D:\Daten\Backup\test.bat) do set 3=%~dpnxc

Es gibt auch noch ein paar andere Optionen, die stehen im Link unter dem Codebeispiel.

Das hilft enorm wenn man mit Dateien oder Dateisystem-Strings (also Pfade etc) arbeiten muss.

Schreibe einen Kommentar