linkit
Goto Top

per Batch dateien umbenennen

Ich habe folgendes Problem und möchte dies per BATCH lösen. NICHT PER SOFTWARE WIE JOE etc....

ich habe eine Anzahl von Dateien die eingescannt wurden:

rechnung01020902014.pdf
rechnung01020902015.pdf
rechnung01020902016.pdf
rechnung01020902017.pdf
rechnung01020902018.pdf
rechnung01020902019.pdf
angebot01020902012.pdf
angebot01020902013.pdf
angebot01020902014.pdf
mahnung0102092011.pdf
mahnung0102092012.pdf
mahnung0102092013.pdf

diese befinden sich automatisch alle im selben Verzeichnis.
Eine Batchdatei soll die Dateien durchlaufen und den Textteil beibehalten, aber die Nummer ersetzen. Die Nummer wird automatisch vom Scanner erstellt.

Am Schluß sollte das so aussehen:


rechnung01.pdf
rechnung02.pdf
rechnung03.pdf
rechnung04.pdf
rechnung05.pdf
rechnung06.pdf
angebot01.pdf
angebot03.pdf
angebot03.pdf
mahnung01.pdf
mahnung02.pdf
mahnung03.pdf

Hat hierfür einer eine Lösung per BATCH ?

Content-Key: 112992

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

Ausgedruckt am: 28.03.2024 um 14:03 Uhr

Mitglied: sysad
sysad 01.04.2009 um 15:43:42 Uhr
Goto Top
Muss im oberen Teil die Nummerierung gegenläufig werden?
Mitglied: bastla
bastla 02.04.2009 um 19:46:21 Uhr
Goto Top
Hallo linkit!

Auch wenn die Frage der Reihenfolge (ich sortiere einfach einmal nach dem Dateinamen) noch nicht geklärt ist, ein Ansatz:
@echo off & setlocal
set "Verz=D:\Eingescannte Dateien"  
set "Typ=pdf"  

pushd "%Verz%"  
for %%i in (rechnung angebot mahnung) do for /f %%a in ('dir /b /on /a-d "%%i*.%Typ%" 2^>nul') do call :ProcessFile "%%a" "%%i"  
popd
goto :eof

:ProcessFile
set /a Nr=101
:Loop
set "Neu=%~2%Nr:~-2%.%Typ%"  
if not exist "%Neu%" goto :RenameIt  
set /a Nr+=1
goto :Loop

:RenameIt
ren %1 "%Neu%"  
goto :eof
Bitte vorerst nur mit einer Kopie des Verzeichnisses testen ...

Die Nummern werden, entsprechend Deiner Vorlage, zweistellig mit führender Null vergeben - es sollte daher nicht mehr als 99 Dateien eines Typs im Verzeichnis geben. Zu überlegen wäre (nicht nur aus diesem Grund), eine neues Zielverzeichnis zu verwenden, da bei aufeinanderfolgenden Batchläufen auch die bereits umbenannten Dateien nochmals verarbeitet werden müssten ...

Grüße
bastla