santamaria
Goto Top

Windows Batchscript

Hallo

Ist folgendes Problem mit einem Windows Batchscript zu lösen?

Ich habe eine Datei, nennen wir sie mal dies_ist.nur.ein_test.datei.doc, welche manipuliert und in eine Variable gespeichert werden sollte.

Der gewünschte Wert der Variable, anhand des oben aufgeführten Beispiel=dies_ist.nur.ein_test

D.h., .doc und .datei müssen weg.

Vielen Dank für Eure Inputs.

Content-ID: 192734

Url: https://administrator.de/forum/windows-batchscript-192734.html

Ausgedruckt am: 11.04.2025 um 15:04 Uhr

rubberman
rubberman 13.10.2012 aktualisiert um 19:05:42 Uhr
Goto Top
Hallo santamaria, willkommen im Forum!

Davon ausgehend, dass die Teilstrings immer durch Punkte voneinander getrennt sind, kann man sich die Optionen der FOR Variablen zu Nutze machen.

@echo off &setlocal
set "oldname=dies_ist.nur.ein_test.datei.doc"  
for %%i in ("%oldname%") do for %%j in ("%%~ni") do set "newname=%%~nj"  
echo "%newname%"  
pause

Grüße
rubberman
santamaria
santamaria 13.10.2012 um 19:57:07 Uhr
Goto Top
Hallo rubberman

Vielen Dank. Funktioniert ja einwandfrei. Was ist nicht ganz verstehen, dass die zwei letzen gewünschten Werte "verschwienden" In diesem Fall datei und doc.
rubberman
rubberman 13.10.2012 aktualisiert um 20:07:12 Uhr
Goto Top
Hallo santamaria,

wenn du dir die Hilfe zu FOR ansiehst ...
FOR /?
... , hast du ziemlich am Ende folgende Erklärung:
    %~nI        - erstellt nur den Dateinamen von %I.
Das bedeutet, jeweils der letzte durch einen Punkt getrennte Teilstring wird als Dateierweiterung angenommen. Durch die Option ~n wird dann nur der Dateiname erweitert. Das Ganze zwei mal in Folge ausgeführt, ergibt das gewünschte Ergebnis.

Grüße
rubberman
santamaria
santamaria 13.10.2012 um 20:07:46 Uhr
Goto Top
Jetzt ist es bei mir angekommen face-smile. Nochmals vielen, vielen Dank.

Gruss
santamaria