Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Batch- oder Perl-Script zur Umbenennung von Dateien nach einer Liste

Mitglied: Stefanie.Obermeyer

Stefanie.Obermeyer (Level 1) - Jetzt verbinden

27.11.2013, aktualisiert 21:45 Uhr, 2511 Aufrufe, 4 Kommentare, 1 Danke

Hallo und Guten Abend!

Ich habe folgendes Problem und hoffe, dass jemand hier eine Lösung z. B. in Form eines kleinen Scriptes dafür hat.

Betriebssystem ist Windows 7. Ich habe Flac-Dateien in einem Ordner, die nach dem Schema:

01 abcde_0815.FLAC
02 xyz (4711).FLAC
03 ard&zdf.FLAC
04 DFB-is-OK.FLAC
... usw. usf.

völlig willkürlich benannt sind. Maßgeblich sind alleine die beiden Zahlen am Anfang des Dateinamens (Tracknummern).

Im selben Ordner liegt nun eine Textdatei namens "Liste.txt" in der zeilenweise die gewünschten Namen für die einzelnen Dateien angeführt von den Tracknummern aufgelistet sind - etwa so:

01 Supertolles Lied
02 Langweilige Ballade
03 Etwas besseres Lied
04 Mein Lieblingssong
... usw. usf.

Ich möchte nun die Dateien im Ordner gemäß den Namen in Liste.txt umbenennen. Das Zuordnungskriterium sollen hierbei allein die ersten beiden Zeichen (also die Tracknummern) der jeweiligen Namen sein:

"01 abcde_0815.FLAC" soll zu "01 Supertolles Lied.FLAC" werden.
"02 xyz (4711).FLAC" soll zu "02 Langweilige Ballade.FLAC" werden.
"03 ard&zdf.FLAC" soll zu "03 Etwas besseres Lied.FLAC" werden.
"04 DFB-is-OK.FLAC" soll zu "04 Mein Lieblingssong.FLAC" werden.

Ich würde mich freuen, wenn mir hierbei jemand mit einem Batch-Script (oder evtl. auch einem Perl- oder Powershell-Script) weiterhelfen könnte.

Natürlich habe ich schon diverse Tools ausprobiert, aber z. B. mit dem "Ant-Renamer" klickt man sich bei mehreren hundert entsprechenden Ordnern buchstäblich zu Tode. Aus diesem Grund soll es möglichst ein Script sein, dass man dann ggf. auch automatisch aufrufen kann.

In der Hoffung auf freundliche Hilfe und mit bestem Dank im Voraus!

Eure Stefanie
Mitglied: 64748
27.11.2013 um 22:44 Uhr
Hallo,

am einfachsten ist es, wenn Du aus der Textdatei ein Batch- (oder Linux-Shell)-Skript bastelst.

Kopiere die Ausgabe des Befehls dir (also Du brauchst eine Liste der Dateinamen) und packe sie als Spalte z.B. in eine Excel (oder OpenOffice Calc)-Tabelle.
Dann kopierst Du den Inhalt der Datei Liste.txt in eine andere Spalte der Tabelle, speicherst es als Textdokument (vielleicht csv) ab und dann kannst Du im Editor "suchen und ersetzen" so dass am Ende Zeilen entstehen in der Form
rename "abcde_0815.FLAC" "01 Supertolles Lied.FLAC" 
rename "xyz (4711).FLAC"  "02 Langweilige Ballade.FLAC" 
rename "ard&zdf.FLAC"  "03 Etwas besseres Lied.FLAC" 
rename "DFB-is-OK.FLAC"  "04 Mein Lieblingssong.FLAC" 
Die genaue Syntax musst Du nachgucken.

Das ganze als .bat Datei speichern und laufen lassen. Vorher die Sicherungskopien nicht vergessen.

Wenn ich das in Perl machen müsste, dann würde ich zwei Arrays nehmen, die Nummer beim Lied entspricht der Position im Array und Du kannst in einer Schleife jeden Eintrag im Array1 umbenennen in den Eintrag an der gleichen Position in Array2.

Markus
Bitte warten ..
Mitglied: bastla
28.11.2013, aktualisiert um 00:34 Uhr
Hallo Stefanie und willkommen im Forum!

Sollte sich für einen Ordner etwa so machen lassen (ungetestet):
01.
@echo off & setlocal
02.
set "Ordner=D:\Ordner"
03.
set "Liste=Liste.txt"
04.

05.
pushd "%Ordner%"
06.
for /f "delims=" %%i in ('dir /b *.FLAC') do (
07.
    for /f %%a in ("%%i") do (
08.
        for /f "delims=" %%n in ('findstr /b "%%a" "%Liste%"') do echo ren "%%i" "%%n.*"
09.
    )
10.
)
11.
popd
12.
pause
Wegen des "echo" in Zeile 8 werden die Befehle zum Umbenennen zunächst nur angezeigt - wenn's passt, einfach dieses "echo" weg lassen ...

Wenn alle Unterordner eines Ausgangsordners durchlaufen werden sollen, etwa so:
01.
@echo off & setlocal
02.
set "Ordner=D:\Songs"
03.
set "Liste=Liste.txt"
04.

05.
for /d %%o in ("%Ordner%\*") do (
06.
    pushd "%%o"
07.
    for /f "delims=" %%i in ('dir /b *.FLAC') do (
08.
        for /f %%a in ("%%i") do (
09.
            for /f "delims=" %%n in ('findstr /b "%%a" "%Liste%"') do echo ren "%%i" "%%n.*"
10.
        )
11.
    )
12.
    popd
13.
)
14.
pause
Grüße
bastla
Bitte warten ..
Mitglied: colinardo
28.11.2013, aktualisiert um 08:45 Uhr
Hallo Stefanie,
mit Powershell skizziert sähe das so aus:
01.
$fileNewNames = "c:\Liste.txt"
02.
$pfadDateien = "C:\FLAC"
03.
$content = gc $fileNewNames
04.
foreach($line in $content){
05.
    if ($line -ne ""){
06.
      $nr = $line.Split(" ")[0]
07.
      $newname = "$nr$($line.Substring($nr.Length)).FLAC"
08.
      gci -Path "$pfadDateien\$nr*.FLAC" | select -First 1 | rename-item -NewName $newname
09.
    }
10.
}
Grüße Uwe
Bitte warten ..
Mitglied: Endoro
28.11.2013, aktualisiert um 05:27 Uhr
Hey, Vorschlag mit sed for Windows:
01.
@ECHO OFF &SETLOCAL
02.
set "startfolder=."
03.
for /d /r "%startfolder%" %%a in (*) do (
04.
	cd /d "%%~fa"
05.
	for /f "tokens=1*" %%b in ('dir /b /a-d *.flac 2^>nul') do (
06.
		sed -nr "/%%~b/s/.*/echo ren \"%%~b %%~c\" \"^&.FLAC\"/ep" "Liste.txt"
07.
	)
08.
)
ren "01 abcde_0815.FLAC" "01 Supertolles Lied.FLAC"
ren "02 xyz (4711).FLAC" "02 Langweilige Ballade.FLAC"
ren "03 ard03 Etwas besseres Liedzdf.FLAC" "03 Etwas besseres Lied.FLAC"
ren "04 DFB-is-OK.FLAC" "04 Mein Lieblingssong.FLAC"
lg.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
TODO List in ( Batch )
gelöst Frage von clragonBatch & Shell4 Kommentare

Hallo Liebe Forum-Nutzer Ich habe heute versucht, mir eine Batch zu schreiben die Notizen anzeigt, aka eine Todo Liste ...

Perl

Perl script zur Auswertung einer Telefonanlage

gelöst Frage von Fl0wMAGPerl2 Kommentare

Hallo leute, ich bin seit einiger Zeit in der Ausbildung zum Systemintegrator und soll da doch bitte mal in ...

Batch & Shell

Komplexe Umbenennung mit Variabler Zeichenlänge mittels Batch

gelöst Frage von parteyspeakaBatch & Shell2 Kommentare

Hallo Zusammen, ich habe mal wieder den Weg zu euch gefunden da mitlesen mal nicht mehr reichte. Wir haben ...

Batch & Shell

BATCH-Script

gelöst Frage von hipfzwirgelBatch & Shell9 Kommentare

Hallo Batch-Profis, ich habe ein Batch-Script geschrieben mit welchem ich einen Treiber unattended installieren kann. Dazu benötige ich 5 ...

Neue Wissensbeiträge
Humor (lol)

"Linux und 5 Gründe Warum man kein Windows verwenden sollte sondern Ubuntu Linux"

Tipp von Snowbird vor 1 TagHumor (lol)8 Kommentare

Gerade gefunden. Ja, ist etwas älter, aber irgendwie lustig?

Humor (lol)

"Warum Linux in einer vernetzten Welt einfach keinen Komfort bietet!"

Tipp von Snowbird vor 2 TagenHumor (lol)13 Kommentare

Ein interessanter Einblick warum Linux nichts für Geräteübergreifende Arbeit ist :)

Humor (lol)
Zuviel Speicher ist ungesund. :-)
Tipp von Lochkartenstanzer vor 2 TagenHumor (lol)17 Kommentare

Moin Kollegen, Heute hatte ich ein ungewöhnliches Aha-Erlebnis: Über das Wochenende habe ich einen einen 6 Jahre alten Bare-Metal ...

Windows Update

KB4517297 verfügbar, behebt Fehler in VB6 VBA VBScript

Information von sabines vor 3 TagenWindows Update

Das Update behebt mögliche Fehler in VB6, VBA und VBScript, die durch das Update KB4512486 vom August entstanden sind. ...

Heiß diskutierte Inhalte
Router & Routing
Deinstalliertes Geräte wird in FritzBox noch immer als verbundenes Gerät angezeigt
gelöst Frage von imebroRouter & Routing18 Kommentare

Hallo, in meiner FritzBox 7490 wird im Bereich "Funknetz" ein Gereät bei den verbundenen Geräten angezeigt, wobei ich nicht ...

Windows 10
Windows 10 druckt nicht mehrere Kopien?
Frage von StefanKittelWindows 1016 Kommentare

Hallo, ich hatte gerade einen Anruf eines Kunden. Sein neuer PC (Win 10 1903) druckt nicht mehr mehrere Seiten ...

Microsoft
Windows 10 - Kombination von lokalen Benutzerkonten und Benutzern aus einer Domäne
Frage von PappnaseVxVVMicrosoft15 Kommentare

Hi, würde gerne folgendes realisieren, von dem ich gern wüsste, ob es geht. Ich habe einen Raum mit 3 ...

Sonstige Systeme
Ist es möglich ein ISDN-Telefon an einen analogen Anschluss anzuschließen?
Frage von cramtroniSonstige Systeme14 Kommentare

Also anders herum geht es ja, da gibt es ja diese Adapter von RJ11 auf TAE-F, aber gibt es ...