jocheng
Goto Top

Dateien im Ordner auslesen und umbennen

Hi Leute
Schönen Feiertag zuerst. Ich habe an diesem leider ein Problem.

[autorun]
cd K:\bilder\
dir *.jpg *.mkv /b /o:N /s > K:\bilder\verzeichnisse.txt
exit

nutze ich um Bilder aus meinem Bilder Order auszulesen. Nun will ich die Bilder aber dazu auch noch umbennen und gleich in einen anderen Ordner kopieren.

Dafür habe ich eine Liste (csv ; getrennt) mit 2 Spalten. Dateinamealt;Dateinameneu. Immer wenn es eine Datei mit dem alten Dateinamen gibt soll diese in den neuen umbenannt werden und in einen anderen Ordner kopiert werden.

Leider habe ich keine Ahnung wie ich die erweiterung hinbekomme. Rename ist wohl die Funktion in der .batch zum umbennen aber wie lese ich die Liste ein?

Content-Key: 316817

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

Ausgedruckt am: 19.03.2024 um 02:03 Uhr

Mitglied: Friemler
Friemler 03.10.2016 um 16:52:36 Uhr
Goto Top
Hallo jocheng,

damit man Dir helfen kann, musst Du uns noch mitteilen was in der CSV-Datei steht. Enthalten die Spalten vollständige Dateipfade oder nur Dateinamen?

Außerdem solltest Du dafür sorgen, dass die CSV-Datei in der Zeichen-Codierung OEM850 gespeichert wird. Das kann man z.B. mit dem kostenlosen Texteditor Notepad++ machen.

Grüße
Friemler
Mitglied: jocheng
jocheng 03.10.2016 um 17:21:23 Uhr
Goto Top
nur Dateinamen

Die Namenliste Neu und alt sieht so aus

S232312;Paris
3443244;Paris
ADA313;Paris
39984D;Köln
4213D2;München

Die Dateinamen im Ordner sind:
S232312-1.jpg
S232312-gross.jpg
S232312_bild2.jpg
3443244-klein.jpg
3443244-3.jpg
ADA313_1.jpg
ADA313-2.jpg
etc
Mitglied: Friemler
Friemler 03.10.2016 um 17:41:56 Uhr
Goto Top
Hallo jocheng,

Du scheinst wieder mal so ein Hilfesuchender zu sein, der sein Problem selbst noch nicht ganz verstanden hat oder einfach nur nicht dazu in der Lage ist, sein Problem vollständig zu erklären.

Aus Deinen Angaben zur "Namenliste Neu und Alt" ergibt sich, dass mehrere Dateien nach der Umbenennung den gleichen Namen erhalten würden, nämlich "Paris" - das kann nicht funktionieren.

Aus den Angaben zur Dateiliste ergibt sich, dass es mehrere Bilder gibt, deren Namensanfang gleich ist (z.B. S232312-xxxxx.jpg). Wie sollen diese offensichtlich zusammengehörigen Dateien behandelt werden, zumal in der "Namenliste Neu und Alt" nur S232312 auftaucht?

Es nervt, wenn man die Problemstellung nur häppchenweise mitgeteilt bekommt und das Script deshalb immer wieder umschreiben muss. Also bitte, nochmal gründlich überlegen und eine vollständige Problembeschreibung liefern.

Grüße
Friemler
Mitglied: jocheng
jocheng 03.10.2016 um 18:00:12 Uhr
Goto Top
sry wenn ich mich schlecht ausgedrückt habe. Es ist nicht ganz einfach ich probiers mal so:

aus
S232312-1.jpg
S232312-gross.jpg
S232312_bild2.jpg
3443244-klein.jpg
3443244-3.jpg

soll
Paris-1.jpg
Paris-gross.jpg
Paris_bild2.jpg
Paris-klein.jpg
Paris-3.jpg

werden
Mitglied: 131026
131026 03.10.2016 aktualisiert um 19:06:36 Uhr
Goto Top
Ungetestet z.B. so
@echo off & setlocal enabledelayedexpansion
set "quelle=c:\ordner"  
set "csv=c:\namen.csv"  
for /f "usebackq tokens=1,2 delims=;" %%a in ("%csv%") do (  
    for %%c in ("%quelle%\%%a*") do (  
        set "name=%%~nxc"  
        ren "%%c" "!name:%%a=%%b!"  
    )
)
R.

umbennen
face-smile
Mitglied: jocheng
jocheng 03.10.2016 um 19:40:44 Uhr
Goto Top
klappt perfekt nur eine Sache ist noch. Die neuen Datei müßen in einen anderen ordner.

@echo off & setlocal enabledelayedexpansion
set "quelle=c:\ordner"  
set "quelle2=c:\ordner\ende"  
set "csv=c:\namen.csv"  
for /f "usebackq tokens=1,2 delims=;" %%a in ("%csv%") do (  
    for %%c in ("%quelle2%\%%a*") do (  
        set "name=%%~nxc"  
        ren "%%c" "!name:%%a=%%b!"  
    )
)

probiert aber das klappt nicht
Mitglied: 131026
131026 03.10.2016 um 19:47:06 Uhr
Goto Top
Zitat von @jocheng:

klappt perfekt nur eine Sache ist noch. Die neuen Datei müßen in einen anderen ordner.
@echo off & setlocal enabledelayedexpansion
set "quelle=c:\ordner"  
set "ziel=c:\ordner\ende"  
set "csv=c:\namen.csv"  
for /f "usebackq tokens=1,2 delims=;" %%a in ("%csv%") do (  
    for %%c in ("%quelle%\%%a*") do (  
        set "name=%%~nxc"  
        copy "%%c" "%ziel%\!name:%%a=%%b!"  
    )
)
Mitglied: jocheng
jocheng 03.10.2016 um 20:06:10 Uhr
Goto Top
perfekt ich danke dir face-smile du rettest meinem abend face-smile
Mitglied: 77559
77559 03.10.2016 aktualisiert um 20:08:35 Uhr
Goto Top
Hallo Jochen,
statt quelle2 würde ich ja ziel benutzen.
In Zeile 6 läuft die for schleife durch den Zielordner wo noch nichts ist.
Der Befehl ren steht für rename und genau das und nur das tut er.
Zeile 8 sollte lauten
copy "%%c%" "%Ziel%\!name:%%a=%%b!"

Gruß
LotPings

Zu langsam face-smile
Mitglied: Biber
Biber 03.10.2016 aktualisiert um 20:57:49 Uhr
Goto Top
{OT]

Zitat von @jocheng:

Dateien im Ordner auslesen und umbennen

Nun will ich die Bilder aber dazu auch noch umbennen und gleich in einen anderen Ordner kopieren.
Rename ist wohl die Funktion in der .batch zum umbennen aber wie lese ich die Liste ein?

Nein, eigentlich ist Rename nicht eine Funktion zum Umbennen.
Aber diese urban legend hält sich schon seit über einem Jahrzehnt hier im Forum.

Ist sozusagen schon 1000 Mal passiert.

Der rgc ist jedenfalls schon vierstellig.

Grüße
Biber
[/OT]