45455
Goto Top

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

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?

Content-Key: 85414

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

Printed on: April 19, 2024 at 14:04 o'clock

Member: bastla
bastla Apr 14, 2008 at 06:58:12 (UTC)
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
Mitglied: 45455
45455 Apr 15, 2008 at 01:06:20 (UTC)
Goto Top
Perfekt - Danke face-smile
Lief für alle Eventualitäten einwandfrei durch.