itallrounder
Goto Top

Dateien via Skript o.ä umbenennen. (mp3 Dateien mit 01.Interpret, 02.Interpret usw.)

Hallo ich bin auf der Suche nach einem Skript der mir sämtliche zahlen aus Dateinamen entfernt, die an den ersten 3 Stellen stehen.

Anbei mal nen Screenshot von meinem Problem
3db641f46bf2f6eb09686acde50fa108

Ich habe keine Ahnung von .bat Dateien oder .vbs oder ähnliches...
Wäre also nett wenn ihr es für "Trottel" erklärt!

Gruß
Kommentar vom Moderator Biber am May 09, 2013 um 19:15:55 Uhr
Dateien via Skript o.ä umbennen...
set /a rgc+=1
#885

Content-Key: 206268

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

Printed on: April 24, 2024 at 02:04 o'clock

Member: bastla
bastla May 09, 2013 at 18:11:38 (UTC)
Goto Top
Hallo m.reeger!

Würdest Du wirklich wollen, dass dann der neue Name etwa für das erste Beispiel mit "Leerzeichen-Leerzeichen" beginnt? Außerdem: Warum die Beschränkung auf 3 Stellen?

Grüße
bastla
Member: ITAllrounder
ITAllrounder May 09, 2013 at 18:15:55 (UTC)
Goto Top
es sind nur musiktitel, doch im auto ist es immer ärgerlichn etwas mit dem ersten Buchstaben zu suchen :D,
wenn da 001, 002, 003 etc steht...

Die zahlen gehen von 001-100 deshalb die ersten 3 Ziffern.

Ich würde sie nicht durch leerzeichen ersetzten, sondern gerne einfach löschen, wenn möglich!
Member: bastla
bastla May 09, 2013 at 18:20:28 (UTC)
Goto Top
Hallo m.reeger!

Meine Frage bezog sich darauf, dass, wenn so wie oben dargestellt, der Name mit "001LeerzeichenMinusLeerzeichen" beginnt, er nach dem Entfernen von "001" mit "LeerzeichenMinusLeerzeichen" beginnen würde - wäre das tatsächlich so gewollt?

Grüße
bastla
Member: ITAllrounder
ITAllrounder May 09, 2013 at 18:24:07 (UTC)
Goto Top
Nein wäre so nicht gewollt...

Sorry nicht nachgedacht ;D dabei gabs erst ein Bier ^^

Soll natürlich direkt mit dem Interpreten beginnen also die ersten 6 Stellen weg.
Member: Endoro
Endoro May 09, 2013 at 18:37:20 (UTC)
Goto Top
Hallo m.reeger,

es sind manchmal sechs, manchmal fünf oder drei zuviel.
Kannst du es auch sehen?

Gruss!
Member: ITAllrounder
ITAllrounder May 09, 2013 at 18:40:12 (UTC)
Goto Top
Hallo ja bei ca. 30 % sind es die ersten 6 stellen, bei ca. 60% sind es die ersten 3 Stellen und den restlichen 10% ist es mal die 1. dann die 2. oder gar 4 Stelle.

Was bedeutet das für mich?

Doch alles Händisch ändern?
Wenn ja habe ich viel zu tun, sind 3.208 Dateien face-sad
Member: Endoro
Endoro May 09, 2013 at 18:42:19 (UTC)
Goto Top
Na, du solltest mal klären, was sonst noch alles so am Anfang steht von deinen MP3's, sonst kriegen die alle die Köpfe rasiert face-smile
Member: ITAllrounder
ITAllrounder May 09, 2013 at 18:48:23 (UTC)
Goto Top
Ja ich habe hier folgenden Beschriftungen:

001$-$Interpret
01.$Interpret
01_Interpret
1.01_Interpret
1.02_Interpret
002-Interpret
002$-$Interpret

Das $ steht für ein leerzeichen
Member: Endoro
Endoro May 09, 2013 at 19:57:36 (UTC)
Goto Top
Hallo m.reeger,
mir ist leider auch nix geniales eingefallen. Beschäftige dich doch mal mit "sed", wenn du sowas häufiger vorhast.
@echo off &setlocal
set "start=X:\my\mp3 folder"  
pushd "%start%"  
for /f "delims=" %%i in ('dir /b /a-d *.mp3^| findstr /rbc:"[0-9][0-9][0-9] - "') do (  
	set "fname=%%~i"  
	setlocal enabledelayedexpansion
	set "nname=!fname:* - =!"  
	echo ren "!fname!" "!nname!"  
	endlocal
)
for /f "delims=" %%i in ('dir /b /a-d *.mp3^| findstr /rbc:"[0-9][0-9][0-9]-"') do (  
	set "fname=%%~i"  
	setlocal enabledelayedexpansion
	set "nname=!fname:*-=!"  
	echo ren "!fname!" "!nname!"  
	endlocal
)
for /f "delims=" %%i in ('dir /b /a-d *.mp3^| findstr /rbc:"[0-9][0-9]\. "') do (  
	set "fname=%%~i"  
	setlocal enabledelayedexpansion
	set "nname=!fname:*. =!"  
	echo ren "!fname!" "!nname!"  
	endlocal
)
for /f "delims=" %%i in ('dir /b /a-d *.mp3^| findstr /rbc:"[0-9][0-9]_"') do (  
	set "fname=%%~i"  
	setlocal enabledelayedexpansion
	set "nname=!fname:*_=!"  
	echo ren "!fname!" "!nname!"  
	endlocal
)
for /f "delims=" %%i in ('dir /b /a-d *.mp3^| findstr /rbc:"[0-9]\.[0-9][0-9]_"') do (  
	set "fname=%%~i"  
	setlocal enabledelayedexpansion
	set "nname=!fname:*_=!"  
	echo ren "!fname!" "!nname!"  
	endlocal
)
popd

Setz den MP3-Ordner, schau dir den Output an und lösch die echo's, wenn es iO ist. Beim Umbenennen können natürlich Doubletten auftreten, dann mosert CMD und benennt diese Datei nicht um.

Gruss!
Member: ITAllrounder
ITAllrounder May 09, 2013 at 20:17:54 (UTC)
Goto Top
Besten Dank!
Anscheinend bin ich trotzdem zu doof :D

Also der Pfad ist G:\Musik
Die Zeilen 08, 15, 22, 29 & 36 habe ich entfernt.
Wenn ich die .bat nun ausführe passiert nichts...

@echo off &setlocal
set "start=G:\Musik"
pushd "%start%"
for /f "delims=" %%i in ('dir /b /a-d *.mp3^| findstr /rbc:"[0-9][0-9][0-9] - "') do (
set "fname=%%~i"
setlocal enabledelayedexpansion
set "nname=!fname:* - =!"
endlocal
)
for /f "delims=" %%i in ('dir /b /a-d *.mp3^| findstr /rbc:"[0-9][0-9][0-9]-"') do (
set "fname=%%~i"
setlocal enabledelayedexpansion
set "nname=!fname:*-=!"
endlocal
)
for /f "delims=" %%i in ('dir /b /a-d *.mp3^| findstr /rbc:"[0-9][0-9]\. "') do (
set "fname=%%~i"
setlocal enabledelayedexpansion
set "nname=!fname:*. =!"
endlocal
)
for /f "delims=" %%i in ('dir /b /a-d *.mp3^| findstr /rbc:"[0-9][0-9]_"') do (
set "fname=%%~i"
setlocal enabledelayedexpansion
set "nname=!fname:*_=!"
endlocal
)
for /f "delims=" %%i in ('dir /b /a-d *.mp3^| findstr /rbc:"[0-9]\.[0-9][0-9]_"') do (
set "fname=%%~i"
setlocal enabledelayedexpansion
set "nname=!fname:*_=!"
endlocal
)
popd
Member: bastla
bastla May 09, 2013 updated at 21:06:22 (UTC)
Goto Top
@ Endoro
Beschäftige dich doch mal mit "sed"
Zur Not sollte es auch ein VBScript tun:
Ordner = "G:\Musik"  
Typ = "mp3" 'in Kleinbuchstaben  

Set rE = New RegExp
rE.Pattern = "^\d+[ -._]+" 'zu entfernende Zeichenfolge als Regular Expression (\d = Ziffer)  

Set fso = CreateObject("Scripting.FileSystemObject")  
For Each Datei In fso.GetFolder(Ordner).Files
    DName = Datei.Name 'Dateinamen zwischenspeichern  
    If LCase(fso.GetExtensionName(DName)) = Typ Then 'nur gewünschten Typ verarbeiten  
        NameNeu = rE.Replace(DName, "") 'unerwünschte Zeichen entfernen  
        If NameNeu <> DName Then If Not fso.FileExists(Ordner & "\" & NameNeu) Then WScript.Echo """" & DName & """ --> """ & NameNeu & """" 'Demo-Ausgabe  
        'If NameNeu <> DName Then If Not fso.FileExists(Ordner & "\" & NameNeu) Then Datei.Name = NameNeu 'Namen wirklich ändern  
    End If
Next
Das Script (als Beispiel in "G:\NamenBereinigen.vbs" gespeichert) in der CMD-Shell mit
cscript G:\NamenBereinigen.vbs
starten.

Solange am Anfang der Zeile 13 ein Apostroph steht, wird nur angezeigt, wie die Namen geändert würden (nur jene, bei denen eine Änderung erforderlich ist). Wenn das Ergebnis gut aussieht, diesen Apostroph vor Zeile 13 entfernen und an den Anfang der Zeile 12 setzen (so wird nix mehr angezeigt, nur mehr umbenannt).

Grüße
bastla

[Edit] Prüfung auf schon vorhandene Dateinamen ergänzt [/Edit]
Member: ITAllrounder
ITAllrounder May 09, 2013 updated at 20:37:35 (UTC)
Goto Top
Danke sah soweit ganz gut aus...
Apostroph aus Zeile 13 in 12 gesetzt und ja...

C:\Windows\System32\cmd.exe

G:\>cscript G:\NamenBereinigen.vbs <13, 34> Laufzeitfehler in Microsft VBScript: Die Datei ist bereits vorhanden.

Aber es sind nur noch 2.206 Elememte :P
Member: Endoro
Endoro May 09, 2013 at 20:39:37 (UTC)
Goto Top
Hallo,

nicht die ganze Zeile face-smile

nur das Wort echo soll entfernt werden.

Gruss!
Member: bastla
bastla May 09, 2013 at 20:40:16 (UTC)
Goto Top
Hallo m.reeger!

Ich habe oben etwas nachgebessert ...

Grüße
bastla
Member: ITAllrounder
ITAllrounder May 09, 2013 at 20:44:44 (UTC)
Goto Top
Super!!!!
Tausend Dank!
Dass ihr hier alle soviel Geduld mit uns Halbwissenden habt ^^

Jetzt sind es nur noch 56 Dateien, wo 007 - XXX und 06-_xxx steht.
Das entferne ich per Hand :D