45455

Dateinamen um vorgegebene Anzahl Zeichen in Klammern kürzen, Endung belassen

geschlossengelöstFrageBatch, Shell Entwicklung
Bin nich so der Programmer, daher komm ich nicht so wirklich zum Ziel.
Das hier hab ich schon gefunden: Dateinamen kürzen
nun stolpere ich aber mit den Klammern als Suchzeichen.

Meine Aufgabe:
In mehreren Unterverzeichnissen wurde durch ein nicht mehr verfügbares Programm an jeden Dateinamen eine 16-stellige Zeichenkette in Klammern angehängt, Dateierweiterung blieb gleich.

Das sieht also so aus:
Aus "xxxx(a1b2c3d4e5f6g7h8).xyz" soll werden "xxxx.xyz"

Kann mir einer mal auf die Sprünge helfen?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 85414

Url: https://administrator.de/forum/dateinamen-um-vorgegebene-anzahl-zeichen-in-klammern-kuerzen-endung-belassen-85414.html

Ausgedruckt am: 26.06.2025 um 19:06 Uhr

bastla
bastla 14.04.2008 um 08:58:12 Uhr
Goto Top
Hallo blue0711!

Das könnte etwa so gehen:
@echo off & setlocal
set "Basis=D:\Verzeichnis"  

for /f "delims=" %%i in ('dir /s /b *^(????????????????^).xyz') do call :ProcessFile "%%i"  
goto :eof

:ProcessFile
set "Name=%~n1"  
echo ren %1 "%Name:~0,-18%%~x1"  
goto :eof
Falls nicht nur der Dateityp ".xyz" betroffen sein sollte, diesen in der "for"-Zeile einfach durch ein anderes Suchmuster (oder * für alle Typen) ersetzen.

Das "echo" vor dem "ren" sorgt dafür, dass zunächst die Umbenennungsbefehle nur angezeigt werden - wenn Du es entfernst, werden sie tatsächlich ausgeführt.

Grüße
bastla
45455
45455 15.04.2008 um 03:06:20 Uhr
Goto Top
Perfekt - Danke face-smile
Lief für alle Eventualitäten einwandfrei durch.