xercxes
Goto Top

Umbenennung von sehr vielen Dateien per Batch? (Verzeichnisname als Dateiname und durchnummeriert)

Hallo. Habe diesen Beitrag Datei mit Ordnernamen umbenennen, aus Ordner verschieben und diesen löschen! per google gefunden und find es klasse. Auch wenn ich keinen plan von programmieren habe, hoffe ich das ich vielleicht eine lösung bekomme.

Habe mir mal diesen Thread durchgelesen und denke das diese Batch-Datei:
@echo off
FOR /F "delims=" %%i in ('dir /B /AD') do (  
FOR /F "delims=" %%j in ('dir "%%i" /B /A-D') do copy /-Y "%%i\%%j" "%%i%%~xj"  
rd /s /q "%%i"  
)

für mich teilweise in Frage kommt. Habe es auch ausprobiert, aber es sind 2 Dinge die anders sein müssten.
Ist es möglich 2 kleine Veränderungen daran vorzunehmen?

Ich hab folgendes Problem:

Momentan habe ich, aufgrund eines Lehrgangs, sehr viel zu scannen. Ich mache das mit einem Canon-Scanner und Patchseiten. Dadurch wird immer wieder ein neuer Ordner erstellt sobald eine dieser Seiten kommt. Und mir fehlt einfach die nötige Zeit meine Dateien ordentlich umzubenennen.

Beispiel:
Laufwerk: C:
Ordner: XYZ
Unterordner: AAA bis ZZZ (Anzahl variiert)
Datei im Unterordner: xxxxx####.jpg (Anzahl variiert)

Die neue Datei im Unterordner sollte nach der Umbenennung wie folgt aussehen: AAA####.jpg (Name des Unterordners+Nr.)

In jedem Ordner sollen die *.jpg Dateien immer wieder ab 0001 durchnummeriert werden. Und die Endung *.jpg soll auch beibehalten werden.

Und die umgenannten Dateien sollen auch nicht in ein anderes Verzeichnis kopiert werden, sonder da bleiben wo sie sind.

Vielen Dank schon mal im Voraus.

Gruß xercxes

Content-Key: 100033

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

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

Member: bastla
bastla Oct 23, 2008 at 19:58:48 (UTC)
Goto Top
Hallo xercxes und willkommen im Forum!

Das könnte etwa so gehen:
@echo off & setlocal enabledelayedexpansion
set "Basis=C:\XYZ"  

for /d %%v in ("%Basis%\*.*") do (  
    set "Letzte=10000"  
    for /f "delims=" %%i in ('dir /b /on "%%v\%%~nxv*.jpg" 2^>nul') do set "Letzte=%%~ni"  
    set /a Nr=1!Letzte:~-4!
    for /f "delims=" %%d in ('dir /b /od "%%v\*.jpg" 2^>nul^|findstr /v /b "%%~nxv"') do (set /a Nr+=1 & echo ren "%%v\%%d" "%%~nxv!Nr:~-4!%%~xd")  
)
Die Vorgangsweise für die Nummerierung sieht dabei so aus, dass zunächst die höchste bereits vorhandene Nummer jedes Ordners ermittelt wird und die neuen Dateien (deren Name also noch nicht mit dem Ordnernamen beginnt) chronologisch geordnet (nach Änderungsdatum) mit der nächsthöheren Nummer beginnend umbenannt werden.

Wegen des "echo" vor dem "ren" in Zeile 8 werden (um gefahrloses Testen zu ermöglichen) die Umbenennungsbefehle zunächst nur angezeigt - erst, nachdem dieses "echo" entfernt wurde, werden die Dateinamen tatsächlich geändert.

Noch ein Hinweis: Wenn Ordnernamen "!" enthalten sollten, wird dieser Batch nicht funktionieren.

Grüße
bastla
Member: xercxes
xercxes Oct 28, 2008 at 13:31:07 (UTC)
Goto Top
Danke bastla für deine Antwort.
Und sorry das ich erst so spät antworte. Habe jedoch ein Problem mit meinem Rechner zu Hause, welches mir nicht erlaubt online zu gehen.
Werde deine Batch ausprobieren sobald ich wieder online gehen kann. Dann gebe ich dir auch Feedback.

Gruss xercxes