robcomboy
Goto Top

Mit Batch rekursiv (Ordner) dateien mit einem String in Zielname.ext umbenennen

Ziel ist es die Cover in meinen unterordnern in folder.jpg umzubenennen.

Hallo Leute, ich hoffe ihr könnt mir helfen,

Aus einem anderem Forum bin ich hier drauf gestoßen.
MIt Hilfe der Batch und dieser reg ist es möglich per Rechtsklich auf eine jpg-datei daraus eine folder.jpg zu machen,
damit diese in der Miniaturansicht entsprechend angezeigt wird.

Zunächst der Code der Datei "C:\Batch\folderjpg.bat":


Code:
@echo off
setlocal
copy %1 "%~d1%~p1\folder.jpg"


Den Code in eine Textdatei kopieren und als "C:\Batch\folderjpg.bat" abspeichern.

Nun muss der Befehl noch in das Kontextmenü eingebracht werden. Dies geschieht mittels eines Registryeintrages:


Code:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\jpegfile\shell\CopyAsFolderJPG]

[HKEY_CLASSES_ROOT\jpegfile\shell\CopyAsFolderJPG\command]
@="\"C:\\Batch\\folderjpg.bat\" \"%1\""


Die Idee die mir da gekommen ist, ist die folgende:

Geht es nicht dass man eine Batch in das Kontextmenü der Ordner einbaut,
dieser startet dann eine Batch die rekursiv in allen Unterordnern nach jpg Dateien mit einem String wie etwa Front, oder Cover etc suchen.
Ist dieser String in einer Datei gefunden, dann wird diese Datei in folder.jpg umbenannt. Was ich damit vermeiden will ist, dass bilder von Cds oder
der Rückseite in folder.jpg umbenannt werden.

Was ich herausgefunden habe ist dass man einen neuen Eintrag für das Kontextmenü der Ordner so anlegt.

"
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\Folder.jpgRenamer]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\Folder.jpgRenamer\command]
@="\"C:\\Batches\\Folder.jpgRenamer\\Renamex2folder.jpg.bat\" \"%1\""

"

Da ich in Batch nicht wirklich die Leuchte bin würde
ich mich freuen, wenn mir hier jemand helfen könnte.

Danke euch...
robcomboy

Content-ID: 92737

Url: https://administrator.de/forum/mit-batch-rekursiv-ordner-dateien-mit-einem-string-in-zielname-ext-umbenennen-92737.html

Ausgedruckt am: 23.12.2024 um 20:12 Uhr

67369
67369 23.07.2008 um 15:05:31 Uhr
Goto Top
Du kannst deine 3-zeilige Batch auch einfach in deinen SendTo-Ordner packen. Dann brauchst du nicht in der Registry rumzufummeln.
robcomboy
robcomboy 23.07.2008 um 15:10:10 Uhr
Goto Top
Das rumfummeln in der Registry ist an dieser Stelle nicht das Problem,
aber hast Recht, übers Send To geht das auch.
bastla
bastla 23.07.2008 um 15:40:36 Uhr
Goto Top
Hallo robcomboy!

Das sollte etwa so gehen (aus Sicherheitsgründen mit "copy" anstelle von "move"):
@echo off & setlocal
for /f "delims=" %%i in ('dir /b /s /a-d "%~1\*Front*.jpg" "%~1\*Cover*.jpg"') do if not exist "%%~dpi\folder.jpg" copy "%%i" "%%~dpi\folder.jpg">nul  
Kopiert wird nur, wenn es noch keine "folder.jpg" gibt. Die Liste möglicher Namensbestandteile kannst Du durch Hinzufügen weiterer "%~1\*Namensbestandteil*.jpg"-Angaben erweitern.

Grüße
bastla
robcomboy
robcomboy 23.07.2008 um 16:01:59 Uhr
Goto Top
Hallo Bastla

Danke für deine Batch, mit der funktioniert das wunderbar.
Ich hab noch gar nicht getestet ob man die auch ins SendTo reinschmeißen kann,
geht dass?
Wenn nicht, nicht schlimm, auf jeden Fall so eine sehr sehr große Arbeitserleichterung.

Vielen Vielen Dank,
bastla
bastla 23.07.2008 um 16:04:12 Uhr
Goto Top
Hallo robcomboy!

Sollte in "SendTo" funktionieren.

Grüße
bastla
robcomboy
robcomboy 23.07.2008 um 16:24:42 Uhr
Goto Top
Besteht noch die Möglichkeit die Quelldatei aus der die folder.jpg erstellt wurde zu löschen?
Ich denke dazu müsste ich jedesmal den Namen in ne variable geben um sie am ende zu löschen.

Geht das überhaupt oder macht das das ganze zu langsam?

Dank Dir...
bastla
bastla 23.07.2008 um 17:00:56 Uhr
Goto Top
Hallo robcomboy!

Soferne Du den Batch noch nicht auf alle Ordner losgelassen hast, könntest Du einfach das "copy" durch ein "move" ersetzen.

Bereits kopierte Bilder sollten sich nachträglich etwa so löschen lassen:
@echo off & setlocal
for /f "delims=" %%i in ('dir /b /s "%~1\*bild*.jpg" "%~1\*cover*.jpg"') do fc /b "%%~dpi\folder.jpg" "%%i">nul && del "%%i"  
Da sicherheitshalber ein Vergleich der Dateien erfolgt und nur bei Übereinstimmung gelöscht wird, könnte das tatsächlich etwas dauern ...

Grüße
bastla
robcomboy
robcomboy 23.07.2008 um 17:27:52 Uhr
Goto Top
Ich habe die Batch schon drüber laufen lassen.
Habe ich Dich richtig verstanden, die Version oben ist das selbe wie deine erste, nur mit denm Unterschied dass die nach dem erstellen der folder.jpg die Quelldatei löscht?

Ich habe in meinen Ordnern noch ein paar front.gif 's gefunden,
könnte ich die auch so erweitern? "%~1\*Front*.gif" "%~1\*Cover*.gif"

bastla
bastla 23.07.2008 um 17:55:51 Uhr
Goto Top
Hallo robcomboy!

Der Batch in meinem vorigen Post hat nur eine "Reparaturaufgabe" - er löscht die Originaldatei, indem er alle passenden Dateien des Ordners mit der "folder.jpg" vergleicht und bei Übereinstimmung entfernt.

Für zusätzliche Ordner, in denen eine "folder.jpg" durch Umbenennen erstellt werden soll, verwende die unten dargestellte Batch-Version.

Ich habe in meinen Ordnern noch ein paar front.gif 's gefunden,
könnte ich die auch so erweitern? "%~1\*Front*.gif" "%~1\*Cover*.gif"
Ja, allerdings würden diese ebenfalls auf "folder.jpg" umbenannt. Wenn eine "folder.gif" entstehen soll, dann so:
@echo off & setlocal
for /f "delims=" %%i in ('dir /b /s /a-d "%~1\*Front*.jpg" "%~1\*Cover*.jpg" "%~1\*Front*.gif" "%~1\*Cover*.gif"') do if not exist "%%~dpi\folder%%~xi" move "%%i" "%%~dpi\folder%%~xi">nul  
Mit dieser Version wird der Dateityp je nach Ausgangsdatei angepasst und letztere auch gelöscht, allerdings kann es sein, dass dadurch sowohl eine "folder.jpg" als auch eine "folder.gif" entsteht.

Grüße
bastla

[Edit] Überzähligen "." vor "%%~xi" entfernt [/Edit]
robcomboy
robcomboy 23.07.2008 um 18:10:08 Uhr
Goto Top
Ah, OK nun haben wir ja allem Rechnung getragen, was da so kommen kann.
Wenn mir noch ein paar Strings einfallen kann ich die ja wie du oben angesprochen hast
hinzufügen.

Ich denke die wahrscheinlichkeit, dass ich in einem Ordner eine gif und eine jpg drin habe
ist sehr gering, wenn dem s sein sollte wird sich der Windows explorer für eine entscheiden, was denke ich mal kein Problem darstellt. Mit der Version werden gifs und jpg abgearbeitet, habe ich irgendwo ne andere ENdung muss ich dasshalt manuell machen....

Dank Dir coch mal richtig fett.....
Ich denke das hier wird auch für viele Andere interessant sein.

Viele Grüße
robcomboy
bastla
bastla 23.07.2008 um 18:39:48 Uhr
Goto Top
Hallo robcomboy!

Mit der Version werden gifs und jpg abgearbeitet, habe ich irgendwo ne andere ENdung muss ich dasshalt manuell machen....
Solltest Du etwa "%~1\*Front*.bmp" verwenden, würde daraus natürlich eine "folder.bmp" (da der Type mit "%%~xi" übernommen wird) - insofern ist die einzige manuelle Tätigkeit das Hinzufügen weiterer Dateinamenvorlagen.

Noch eine Anmerkung: In der ersten Fassung hatte ich vor "%%~xi" einen "." - ist jetzt korrigiert.

Grüße
bastla
robcomboy
robcomboy 23.07.2008 um 18:42:48 Uhr
Goto Top
Oh, super,
also universell anwendbar.
Genial....

Vielen Dank noch mal!!!!

Gruß
robcomboy