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-Key: 192734

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

Printed on: April 25, 2024 at 10:04 o'clock

Member: rubberman
rubberman Oct 13, 2012 updated at 17:05:42 (UTC)
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
Member: santamaria
santamaria Oct 13, 2012 at 17:57:07 (UTC)
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.
Member: rubberman
rubberman Oct 13, 2012 updated at 18:07:12 (UTC)
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
Member: santamaria
santamaria Oct 13, 2012 at 18:07:46 (UTC)
Goto Top
Jetzt ist es bei mir angekommen face-smile. Nochmals vielen, vielen Dank.

Gruss
santamaria