Zeichen und Zeichenkette aus Dateinamen automatisch entfernen
Ich habe monatlich einen Haufen Auswertungen die ich in ein Programm importieren muss, dazu muss der Dateiname immer gleich sein. Die Auswertungen kommen automatisch, haben aber immer eine variierende Zeichenkette im Namen drin.
Ahoi zusammen!
Wie im Vorwort erwähnt, muss ich Daten von Programm A nach Programm B importieren. Programm B will die Dateinamen immer nach einem vorgegebenem Schema haben, Programm A exportiert die Daten aber immer mit Unterstrichen und variierenden Zeichenketten im Dateinamen.
Programm B will haben:
ABC-123-01 Erstes Sachgebiet - Abfrage 1.xml
ABC-123-02 Erstes Sachgebiet - Abfrage 25.xml
Programm A liefert:
ABC-123-01_Erstes_Sachgebiet_-_Abfrage_1.de-Tagesdatum-SessionID.xml
ABC-123-02_Erstes_Sachgebiet_-_Abfrage_25.de-Tagesdatum-SessionID.xml
In diesem Thread hier bin ich teilweise fündig geworden:
Per Batch oder VBS Zeichen aus Dateinamen ersetzen
Die Unterstriche im Dateinamen konnte ich mit Hilfe dieses Scripts in Leerzeichen umwandeln, das hat schonmal gepasst. Nur die Zeichenkette ab dem Punkt ".de" bis zur Dateiendung müsste ich jetzt noch rauswerfen. Ich hätte ja, genau wie beim Unterstrich, die Zeichenkette durch "" ersetzen lassen können, da diese aber immer Variabel ist, kann ich das so im Script nicht mit angeben.
Vielleicht hat jemand einen Tipp wie ich das da raus kriege?
Ahoi zusammen!
Wie im Vorwort erwähnt, muss ich Daten von Programm A nach Programm B importieren. Programm B will die Dateinamen immer nach einem vorgegebenem Schema haben, Programm A exportiert die Daten aber immer mit Unterstrichen und variierenden Zeichenketten im Dateinamen.
Programm B will haben:
ABC-123-01 Erstes Sachgebiet - Abfrage 1.xml
ABC-123-02 Erstes Sachgebiet - Abfrage 25.xml
Programm A liefert:
ABC-123-01_Erstes_Sachgebiet_-_Abfrage_1.de-Tagesdatum-SessionID.xml
ABC-123-02_Erstes_Sachgebiet_-_Abfrage_25.de-Tagesdatum-SessionID.xml
In diesem Thread hier bin ich teilweise fündig geworden:
Per Batch oder VBS Zeichen aus Dateinamen ersetzen
Die Unterstriche im Dateinamen konnte ich mit Hilfe dieses Scripts in Leerzeichen umwandeln, das hat schonmal gepasst. Nur die Zeichenkette ab dem Punkt ".de" bis zur Dateiendung müsste ich jetzt noch rauswerfen. Ich hätte ja, genau wie beim Unterstrich, die Zeichenkette durch "" ersetzen lassen können, da diese aber immer Variabel ist, kann ich das so im Script nicht mit angeben.
Vielleicht hat jemand einen Tipp wie ich das da raus kriege?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 190615
Url: https://administrator.de/contentid/190615
Ausgedruckt am: 25.11.2024 um 01:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo DrAlcome!
Soferne "Erstes Sachgebiet" immer aus zwei Wörtern besteht, ließe sich da mit einem Batch etwa so machen:
Das "
Grüße
bastla
[Edit] Fehlenden ' nachgetragen [/Edit]
Soferne "Erstes Sachgebiet" immer aus zwei Wörtern besteht, ließe sich da mit einem Batch etwa so machen:
for /f "delims=" %%i in ('dir /b "D:\Deine Dateien\ABC-*_*.xml"') do for /f "tokens=1-6 delims=_." %%a in ("%%~ni") do echo ren "D:\Deine Dateien\%%i" "%%a %%b %%c %%d %%e %%f%%~xi"
echo
" ist dazu da, die Umbenennung durch Anzeige des Befehles nur zu simulieren - wenn Du es weg lässt, werden die Namen tatsächlich geändert.Grüße
bastla
[Edit] Fehlenden ' nachgetragen [/Edit]
... aber wie auch immer - soferne mit "-de" eine verlässliche Position für das Aufteilen der Namen vorliegt, könntest Du es so versuchen:
- und ja, das "
Grüße
bastla
@echo off & setlocal
set "Trenn=-de"
pushd "D:\Deine Dateien"
for /f "delims=" %%i in ('dir /b "ABC-*_*.xml"') do call :ProcessFile "%%i"
goto :eof
:ProcessFile
set "Name=%~n1"
set "Name=%Name:_= %"
call set "Ent=%%Name:*%Trenn%=%%"
call set "NameNeu=%%Name:%Trenn%%Ent%=%%%~x1"
echo ren %1 "%NameNeu%"
goto :eof
echo
" hat noch immer den gleichen Zweck ... Grüße
bastla