Batch Dateinamen ändern ab einem bestimmten Zeichen

VodKen

Lieutenant
Registriert
Aug. 2004
Beiträge
665
Hallo zusammen,

ich habe eine kleine Herausforderung. Ich muss mehrere 1000 Dateien umbenennen.

Ausgangslage:

21345_iphone3.jpg
21345_iphone4.jpg
1234_hhh.jpg
1235_xcg.jpg


So soll es dann aussehen:

21345_1.jpg
21345_2.jpg
1234_1.jpg
1235_1.jpg

In Worten: die Zahlen vor dem Unterstrich sollen beibehalten werden. Nach dem Unterstrich soll alles gelöscht werden, nur eine Zahl aufsteigend dran gehängt werden.

Ich habe es bereits mit dem Programm Renamer Lite versucht, komme leider nicht weiter. Ist das via Batch möglich?

Vielen Dank für jeden Beitrag
 
Hi,

TotalCommander müsste das auch hinkriegen. Allerdings der Zähler bei Dateinamenanhängig... das wird damit nicht gehen, auch mit dem AdvancedRenamer nicht, oder? Es soll ja kein durchgängiger Zähler sein sondern nur, wenn der Dateiname danach mehrfach vorkommen würde. Das ist nicht so trivial denke ich.

VG,
Mad
 
für jeden zahlenblock extra abfragen (je mehr zahlenblöcke umso zeit intensiver. aber quick&dirty, solange es nur eine handvoll sind)

PHP:
Suche nach: 21345_*
 
Madman1209 schrieb:
...Es soll ja kein durchgängiger Zähler sein sondern nur, wenn der Dateiname danach mehrfach vorkommen würde. Das ist nicht so trivial denke ich.

Also man kann in Advanced Renamer auch mit Kollosions-Regeln arbeiten. Eigentlich müsste man da was passendes basteln können.

MfG
 
Die Frage die sich mir stellt, ist doch ob die Zahlen nach _ fortlaufend sein sollen, wenn ja dann könnte die Batch so aussehen:
Code:
@echo off & setlocal enabledelayedexpansion
cls

set "Verzeichnis=%~dp0"
set "Typ=jpg"
set /a Nr=1

pushd %Verzeichnis% || goto :eof

for /f "delims=" %%a in ('dir /b /a-d *.%Typ%') do (
    set "Datei=%%~na"
    for /f "delims=_ tokens=1" %%b in ("!Datei!") do (
        echo ren "%%a" "%%b_!Nr!%%~xa"
        set /a Nr+=1
    )
)    
pause
goto :eof
Ich denke der Code ist selbsterklärend

Als Batch abspeichern und in gleichen Verzeichnis legen wo die Dateien liegen....echo zum scharf stellen entfernen, Backup anlegen... es wird von mir keine Haftung übernommen!
 
Perfekt, vielen Dank ! Werde ich gleich testen
 
Entilzha schrieb:
Die Frage die sich mir stellt, ist doch ob die Zahlen nach _ fortlaufend sein sollen, wenn ja dann könnte die Batch so aussehen
Nach dem Beispiel würde ich davon ausgehen, dass nur Dateien mit gleichem Namensanfang aufsteigend durchnumeriert sein sollen. Außerdem sollen wohl nur Dateien umbenannt werden, die ein "_" im Dateinamen haben.

Dein Beispiel entsprechend angepasst:
Code:
@echo off & setlocal enabledelayedexpansion
cls
 
set "Verzeichnis=%~dp0"
set "Typ=jpg"
 
pushd %Verzeichnis% || goto :eof

:: 'Nur Dateinamen bearbeiten, die einen "_" im Namen haben' 
for /f "delims=_ tokens=1,2" %%a in ('dir /on /b /a-d *_*.%Typ%') do (
	:: 'Pruefen ob gleicher Dateibeginn'
	if NOT !Datei! == %%a_ (
		set "Datei=%%a_"
		set /a Nr=1
		echo ren "%%a_%%b" "%%a_!Nr!.%Typ%"
		set /a Nr+=1
	) else (
		echo ren "%%a_%%b" "%%a_!Nr!.%Typ%"
		set /a Nr+=1
	)
)    
pause
goto :eof
 
Zuletzt bearbeitet: (Beispiel vereinfacht)
Zurück
Oben