winniemc
Goto Top

Batchumbenennung

Schönen guten Morgen,

wir bekommen jede Woche eine CD mit Bilder zugeschickt.
Auf dieser CD sind bis zu 100 Bilder die alle so heißen:
a03611108214.jpg
i03611305169.jpg
(Zahlen und Buchstaben ändern sich)

Damit wir diese bei uns verarbeiten können, müssen wir diese auf den Anfangsbuchstaben und auf die letzten 4 Zahlen verkürzen.
z.B. so:
a8214.jpg
i5169.jpg

Ich suche jetzt einen Batchbefehl der mir die Zahlen dazwischen entfernt.

Habe hier im Forum schon einige Beiträge zum Thema gelesen, aber habe leider nicht das Fachwissen um die bestehenden Batchbefehle für meinen Zweck umzuschreiben.

Vielen Dank für die Hilfe

Content-ID: 46804

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

Ausgedruckt am: 25.11.2024 um 06:11 Uhr

Schmitt.Mathias
Schmitt.Mathias 15.12.2006 um 08:49:56 Uhr
Goto Top
Hi
ich habe meine Bilder immer mit IrfanView umbenannt, da gibts unter Datei -> Batchbearbeitungen -> Dateien umbenennen (oder so ähnlich) eine Funktion, wo du alle eingeladenen Dateien oder die eines Ordners nacheinander mit einem Klick umbenennen kannst.
Hierfür gibt es auch diverse Einstellungen (best. Name, best. fortlaufende Nr...).
Schau mal, ob es ne Funktion gibt, um deinen Dateinamen entsprechend zu kürzen.

Das Programm heißt wie schon gesagt IrfanView und ist Freeware.

Gruß
Mathias
miniversum
miniversum 15.12.2006 um 09:17:07 Uhr
Goto Top
Das ist änlich dem Problem hier: Ordner umbenennen per batch

Versuchs so (ungetestet):

@echo off
Setlocal EnableDelayedExpansion
FOR /F %%i in ('dir /b') do set Name=%%i && rename !Name! !Name:~0,1!!Name:~-4!

miniversum
WinnieMC
WinnieMC 15.12.2006 um 09:40:55 Uhr
Goto Top
Danke für eure schnellen Hilfsversuche.
Irfan View funktioniert zwar gut aber kommt bei uns leider nicht in Frage, da mehrere Personen an unterschidlichen Arbeitsstationen umwandeln und wir nur für das Umwandeln keine Lizenzen kaufen wollen.

Miniversum deinen Befehl habe ich getestet und er wandelt mir nur 4 Dateien um. 3 Bilder und immer die Batchdatei. Beim umwandeln entfernt er alles nach dem ersten Zeichen und fügt am Ende die Dateiendung nur an.

Sieht dann so aus :
ajpg
ijpg

Punkt vor der Dateiendung wird auch gelöscht.

Den anderen Beitrag muss ich mir erst noch in Ruhe anschauen, wenn ich dazu Zeit finde.
anding
anding 15.12.2006 um 09:46:48 Uhr
Goto Top
Hallo!

Ich weiß, man soll nicht in Fremde Threads fragen posten, aber hier wird ja fast das gleiche gescuht... face-wink

@miniversum:
Kann man das auch von hinten machen (hört sich blöd an, i know... face-big-smile )
Sprich, die letzten 4 Zeichen bleiben, und dann sollen (von hinten) 10 stellen gelöscht werden. Das hat den Hintergrund, weil die Dateinamen nicht alle gleich lang sind und ich den Anfang komplett will.
Hoffe du verstehst was ich meine!
WinnieMC
WinnieMC 15.12.2006 um 09:54:09 Uhr
Goto Top
So, hab dank der guten Beschreibung im anderen Thread mir es passend zusammen gebastelt. Nun hab ich nur noch ein Problem. Ich möchte die Batchdatei gerne im selben Ordner haben. Diese wird aber leider mit Umbenannt. Gibt es eine Möglichkeit die Batchdatei davor zuschützen? Aller heißt die Datei Test.bat dann nicht umbenennen?

Vielen Dank für die Hilfe
Biber
Biber 15.12.2006 um 10:13:18 Uhr
Goto Top
Moin WinnieMC,

Da Du ja nur *.jpg-Dateien verarbeiten willst, kannst Du das in der DIR-Anweisung ja darauf einschränken.
FOR /F %%i in ('dir /b *.jpg') do set Name....  

Gruß
Biber
WinnieMC
WinnieMC 15.12.2006 um 10:19:08 Uhr
Goto Top
Danke hat alles super funktioniert.
Schmitt.Mathias
Schmitt.Mathias 15.12.2006 um 15:52:18 Uhr
Goto Top
Alter Biber, woher weißte so Sachen denn immer face-smile ???

Gruß
Mathias
miniversum
miniversum 15.12.2006 um 18:00:53 Uhr
Goto Top
Ok war ein Denkfehler von mir. War wie gesagt ungetestet.
Drum hier das ganze nochmal mit allen Korrekturen.

@echo off
Setlocal EnableDelayedExpansion
FOR /F %%i in ('dir /b *.jpg') do set Name=%%i && rename !Name! !Name:~0,1!!Name:~-8!

miniversum
anding
anding 15.12.2006 um 18:11:02 Uhr
Goto Top
@miniversum

Hast du vielleicht auch einen Tip für mein Problem (ein paar Posts weiter oben)?!
miniversum
miniversum 15.12.2006 um 18:28:57 Uhr
Goto Top
Sorry überlesen.
Klar geht das, so mache ich das hier ja auch.

!Name:~0,1! sind ab dem ersten Zeichen 1 Zeichen lang.
!Name:~-8! sind die letzten 8 Zeichen (egal wie lange der Dateinamename ist.

miniversum
anding
anding 15.12.2006 um 19:38:33 Uhr
Goto Top
Ich glaub wir haben uns Missverstanden....

Dateinamen vorher:
testbild2_google.jpg
test5_google.jpg
...

Und danach soll's so aussehen:

testbild2.jpg
test5.jpg

--> Sprich er soll die Endung lassen und dann die nächsten 7 Zeichen weg (von hinten herein gezählt...)

Geht das auch?!
miniversum
miniversum 15.12.2006 um 20:04:04 Uhr
Goto Top
Da würd ichs dann einfach so zusammensetzen (bei .jpg als Endung:

@echo off
Setlocal EnableDelayedExpansion
FOR /F %%i in ('dir /b *.jpg') do set Name=%%i && rename !Name! !Name:~0,-12!.jpg

miniversum
Biber
Biber 15.12.2006 um 23:25:45 Uhr
Goto Top
Nicht, dass ich spitzfindig sein wollte, aber... face-wink

Da über die DIR-Wildcard *.jpg ja nun ALLE *.jpgs durch diese Batchzeile genudelt werden, würde ich wenigstens noch prüfen, ob denn überhaupt genug Stellen zum Kürzen vorhanden sind.
Sonst gibt es auf einmal eine Datei ".jpg" oder auch nur "pg" (was dann auch sprechend ist).

Was ich meine ist folgendes (mit *.txt-Dateien; *jpg hab ich zu wenig):
>FOR /F %i in ('dir /b *.txt') do @set "Name=%~ni" && @echo rename "!Name!%~xi" "!Name:~0,-12!.*"  
rename "Beispiel.txt" ".*"  
rename "benutzer1.txt" ".*"  
rename "benutzer2.txt" ".*"  
..

Besser, auch wenn es kryptischer aussieht:
>FOR /F %i in ('dir /b *.txt') do @set "Name=%~ni" && if "!Name:~0,-12!" GTR "" @echo rename "!Name!%~xi" "!Name:~0,-12!.*"  
rename "beateuhse_2006-10-02_171541.txt" "beateuhse_2006.*"  

Gruß
Biber
miniversum
miniversum 16.12.2006 um 13:29:31 Uhr
Goto Top
Klar ist woll eine Universellere Lösung.

Ich bin da halt von der Aussage " ... dann die nächsten 7 Zeichen weg (von hinten herein gezählt... " ausgegangen.

miniversum