Dateien Umbenennen mit BAT oder VBS
Hi zusammen,
Ich habe hier einige Verzeichnisse mit *.mp3 bei denen ich die Dateien am liebsten per VBS Umbenennen möchte.
Es sollen von den *.mp3 Dateien die jeweils ersten 3 bis 6 Zeichen mit Hilfe einer Messagebox "Abgeschnitten" werden. Ich bin schon seit mehreren Tagen am googlen, dreh mich aber im Kreis und finde nichts. Es geht also darum die Nummerierung die immer wieder anders ist (01 , 03 - , 04, #05-, 6--, aa , u.s.w.) vor dem Interpreten Abzuschneiden.
Der VBScript oder der DOS-Batch soll in das Verzeichnis Kopiert werden (per Hand) und dort (per doppelklick) ausgeführt werden. Es ist also nicht immer ein Fester Verzeichnisname.
Es Existieren bereits zwei Dateien (Tracklist.txt und Playlist.m3u) mit (Verz.Name - Tracklist.txt) und ohne (Verz.Name - Playlist.m3u) Nummerierung. Diese sollen auch bestehen bleiben.
Ein Externes Programm wie Joe oder swFNP oder ähnliches kommt nicht in Frage da dieser Script auf Verschiedenen Rechnern laufen soll (alle min. Win2000).
Eine VBS Lösung würde ich Vorziehen, da ich zum Erstellen der Tracklist und Playlist bereits eine VBA Lösung habe. Beide Scripte würde ich dann in Zukunft zu einer Zusammenziehen. Momentan bin ich aber schon froh wenn ich das ohne Externes Programm überhaupt gebacken bekomme.
Bin für jede Lösung, Idee, Link oder Ansatz dankbar, bzw ist das überhaupt machbar?
Ralf
Ich habe hier einige Verzeichnisse mit *.mp3 bei denen ich die Dateien am liebsten per VBS Umbenennen möchte.
Es sollen von den *.mp3 Dateien die jeweils ersten 3 bis 6 Zeichen mit Hilfe einer Messagebox "Abgeschnitten" werden. Ich bin schon seit mehreren Tagen am googlen, dreh mich aber im Kreis und finde nichts. Es geht also darum die Nummerierung die immer wieder anders ist (01 , 03 - , 04, #05-, 6--, aa , u.s.w.) vor dem Interpreten Abzuschneiden.
Der VBScript oder der DOS-Batch soll in das Verzeichnis Kopiert werden (per Hand) und dort (per doppelklick) ausgeführt werden. Es ist also nicht immer ein Fester Verzeichnisname.
Es Existieren bereits zwei Dateien (Tracklist.txt und Playlist.m3u) mit (Verz.Name - Tracklist.txt) und ohne (Verz.Name - Playlist.m3u) Nummerierung. Diese sollen auch bestehen bleiben.
Ein Externes Programm wie Joe oder swFNP oder ähnliches kommt nicht in Frage da dieser Script auf Verschiedenen Rechnern laufen soll (alle min. Win2000).
Eine VBS Lösung würde ich Vorziehen, da ich zum Erstellen der Tracklist und Playlist bereits eine VBA Lösung habe. Beide Scripte würde ich dann in Zukunft zu einer Zusammenziehen. Momentan bin ich aber schon froh wenn ich das ohne Externes Programm überhaupt gebacken bekomme.
Bin für jede Lösung, Idee, Link oder Ansatz dankbar, bzw ist das überhaupt machbar?
Ralf
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 27720
Url: https://administrator.de/forum/dateien-umbenennen-mit-bat-oder-vbs-27720.html
Ausgedruckt am: 10.04.2025 um 23:04 Uhr
14 Kommentare
Neuester Kommentar
Moin Ralf,
nun werde erst mal ruhiger.. ist sowohl mit Batch wie VBS alles lösbar.. aber die Anforderung ist mir nur teilweise einleuchtend. Würde ich gern vorher klären.
Warum datt denn??? Reicht doch, wenn der batch/der VB-Schnipsel auf dieses Verzeichnis angewendet werden würde? Wer löscht denn die 27394 Kopien von FormatPlaylist.bat oder FormatPlaylist.vbs wieder aus allen Unterverzeichnissen?? Du??
Öhmm... wäre es dann nicht sinnvoller, in den Explorer einen zusätzlichen Befehl in das Kontextmenü für das Verzeichnis einzutragen?
Selbst das wäre aber zumutbarer..
Okay...
ööööhm... wenn die so bestehen bleiben, stimmen doch aber die Dateinamen nicht überein, oder überseh ich etwas?
Wenn Du es in Dein VBA-Krams einfügen willst, wäre es schon das Sinnvollste, wenn Du die relevanten Codeschnipsel hier postest, denn das Glattziehen und Umbenennen der *.mp3's sollt ja schon VOR der dem Schreiben der Tracklist/PlayList erfolgen IMHO.
Außerdem - wenn Du hier Deine Codeschnipsel postest, ersparst Du Dir solche Antworten wie "Nimm doch den TotalCommander.."
Gruß Biber
nun werde erst mal ruhiger.. ist sowohl mit Batch wie VBS alles lösbar.. aber die Anforderung ist mir nur teilweise einleuchtend. Würde ich gern vorher klären.
Der VBScript oder der DOS-Batch soll in das Verzeichnis Kopiert werden (per Hand)
und dort (per doppelklick) ausgeführt werden.
Es ist also nicht immer ein Fenster Verzeichnisname.
Es Existieren bereits zwei Dateien (Tracklist.txt und Playlist.m3u)
mit (Verz.Name - Tracklist.txt) und
ohne (Verz.Name - Playlist.m3u) Nummerierung.
mit (Verz.Name - Tracklist.txt) und
ohne (Verz.Name - Playlist.m3u) Nummerierung.
Diese sollen auch bestehen bleiben.
Wenn Du es in Dein VBA-Krams einfügen willst, wäre es schon das Sinnvollste, wenn Du die relevanten Codeschnipsel hier postest, denn das Glattziehen und Umbenennen der *.mp3's sollt ja schon VOR der dem Schreiben der Tracklist/PlayList erfolgen IMHO.
Außerdem - wenn Du hier Deine Codeschnipsel postest, ersparst Du Dir solche Antworten wie "Nimm doch den TotalCommander.."
Gruß Biber
Verständnis kann man nur anhand von einleuchtenden Informationen aufbauen.
Warum einfach wenn´s auch kompliziert geht, dachte ich zu Anfang, aber anscheinend hast Du sehr präzise Vorstellung deines Vorhabens.
Leider bin ich kein VBS Experte, deshalb entschuldige ich mich für meine Kommentare. . . .sorry
Warum einfach wenn´s auch kompliziert geht, dachte ich zu Anfang, aber anscheinend hast Du sehr präzise Vorstellung deines Vorhabens.
Leider bin ich kein VBS Experte, deshalb entschuldige ich mich für meine Kommentare. . . .sorry

Da stimme ich Dir zu: VBS ist genauso wie Batch sehr mächtig 
Lonesome Walker
Lonesome Walker

Mkay, dann frage ich jetzt mal genauer:
Was willst Du?
Du willst, das irgendwie ein VB-Script (oder Batch) irgendwas von einer Datei "wegschneidet".
Ist das immer gleich viel, was er wegschneiden soll?
Wie Biber oben schon erwähnt hat, wäre es viel einfacher, das Script in das Kontext-Menü zu integrieren; dann mußt Du nur auf den Ordner klicken, und dann frägt er Dich:
Zusätzlich erstellt es Dir eine Tracklist.txt und einePlaylist.m3u im Anschluß
Lonesome Walker
PS: Ich nutze für so eklige Sachen wie Musikverwaltung gerne Musicmatch; kostet 20,- ?uroen, macht aber die ganze Arbeit binnen 10 Sekunden...
(jaaaaaa, ich weiß, ich soll keine Schleichwerbung machen, und Geld ausgeben will ja nie jemand..)
Was willst Du?
Du willst, das irgendwie ein VB-Script (oder Batch) irgendwas von einer Datei "wegschneidet".
Ist das immer gleich viel, was er wegschneiden soll?
Wie Biber oben schon erwähnt hat, wäre es viel einfacher, das Script in das Kontext-Menü zu integrieren; dann mußt Du nur auf den Ordner klicken, und dann frägt er Dich:
1
"Es wurden " & n & " .mp3 Dateien gefunden. Wieviele Zeichen sollen jeweils vom Anfang weggeschnitten werden?"
Zusätzlich erstellt es Dir eine Tracklist.txt und einePlaylist.m3u im Anschluß
Lonesome Walker
PS: Ich nutze für so eklige Sachen wie Musikverwaltung gerne Musicmatch; kostet 20,- ?uroen, macht aber die ganze Arbeit binnen 10 Sekunden...
(jaaaaaa, ich weiß, ich soll keine Schleichwerbung machen, und Geld ausgeben will ja nie jemand..)

Öhm, langsam:
die Tracklist soll den gesamten Pfad und die alten Dateinamen enthalten?
Alles andere ist machbar; ich guck grade mal
Lonesome Walker
PS: Erwarte aber keine Antwort vor 23:00 Uhr; ich guck' hier nur gelegentlich rein.
Sowas muß ich schreiben, wenn ich ma Freizeit hab ^^
die Tracklist soll den gesamten Pfad und die alten Dateinamen enthalten?
Alles andere ist machbar; ich guck grade mal
Lonesome Walker
PS: Erwarte aber keine Antwort vor 23:00 Uhr; ich guck' hier nur gelegentlich rein.
Sowas muß ich schreiben, wenn ich ma Freizeit hab ^^
Moin RalfSte,
ich bin immer noch nicht ganz sicher, ob ich Deine Anforderung verstehe.
Jedenfalls verstehe ich nicht so recht die Schwierigkeit der Aufgabe.
Ich bin nun nicht der VBS-Crack, aber selbst wenn ich den Umweg über einen VBS-Schnipsel gehe statt es mit zwei,drei Batchzeilen zu machen, halte ich für lösbar (oder habe es eben nicht verstanden).
Deshalb nochmal an einem schnellen Beispiel. Wenn ich ein Verzeichnis "Z:\Lena - Wunden geschehen" habe mit folgenden *.mp3's
$cmd$dir /b *.mp3
03 - Lena Ich sing noch mehr.mp3
04 - Lena Bin ganz heiser.mp3
#08 - Lenas Papa - Summt mit.mp3
17 Hans Wurst - Nochn Song.mp3
11---Hans Wurst - Ein Song.mp3
aaHansiWurst DrittSong.mp3
02 - Lena Ich singe mehr.mp3
01 - Lena Ich singe was.mp3
...und ich jage den unten geposteten Schnipsel drüber
Z:\Lena - Wunden geschehen>
$cmd$cscript //nologo z:\Mp3List.vbs
--> dann erhalte ich
(--Inhalt "Lena - Wunden geschehen - Playlist.m3u")
Lenas Papa - Summt mit.mp3
Lena Ich singe was.mp3
Lena Ich singe mehr.mp3
Lena Ich sing noch mehr.mp3
Lena Bin ganz heiser.mp3
Hans Wurst - Ein Song.mp3
Hans Wurst - Nochn Song.mp3
HansiWurst DrittSong.mp3
..und
(--Inhalt "Lena - Wunden geschehen - Tracklist.txt")
#08 - Lenas Papa - Summt mit.mp3
01 - Lena Ich singe was.mp3
02 - Lena Ich singe mehr.mp3
03 - Lena Ich sing noch mehr.mp3
04 - Lena Bin ganz heiser.mp3
11---Hans Wurst - Ein Song.mp3
17 Hans Wurst - Nochn Song.mp3
aaHansiWurst DrittSong.mp3
Ist das so das, was Du meintest?
Sonst ändere an diesem Beispiel bitte noch mal den SOLL-Output.
Der angepasste Schnipsel:
'-------snipp Mp3List.vbs
Set oFso = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFso.GetFolder(".")
Set oFiles = oFolder.Files
Dim MP3s(), n
n = 0
For Each oFile in oFiles
If LCase(Right(oFile,4))=".mp3" Then
ReDim Preserve MP3s(n)
MP3s(n) = oFile.Name
n = n+1
End If
Next
If n=0 Then
MsgBox "Es wurden keine MP3s gefunden!"
quit
End if
quicksort MP3s, 0, n-1
sPlaylist = oFolder.Name & " - Playlist.m3u"
sTracklist = oFolder.Name & " - Tracklist.txt"
Set oP=oFso.opentextfile(sPlaylist,2,true)
Set oT=oFso.opentextfile(sTracklist,2,true)
For i = 0 to n-1
oT.writeline MP3s(i) 'In der Tracklist ist der Dateiname Eins zu Eins
intDelimpos= Instr(Left(Mp3s(i), 6), "-")
IF intdelimpos = 0 then intDelimpos = Instr(Left(Mp3s(i), 6), " ")
Do while ( Mid(Mp3s(i),intdelimpos+1,1)=" " or Mid(Mp3s(i),intdelimpos+1,1)="-")
intDelimPos=intDelimpos+1
Loop
If intdelimpos= 0 then
intdelimpos=InputBox ("Titel '"& left(Mp3s(i),25) & "....'" & vbCRLF _
& "Wieviele Zeichen sollen jeweils vom Anfang weggeschnitten werden?",_
"Kein Delimiter erkennbar",0)
end if
oP.writeline Mid(MP3s(i),intdelimpos+1) ' Playlist.. ohne Prefix/TrackNo
Next
oP.close
oT.close
'------------ Unchanged ab hier
MsgBox n & " .mp3 Dateien in Tracklist/Playlist " & sTracklist & "/.m2u geschrieben."
Sub quicksort (mArray, FromPos, ToPos)
i = FromPos
j = ToPos
p = mArray((i+j)/2)
Do
For i = i to j
If StrComp(mArray(i), p, 1) >= 0 Then Exit For
Next
For j = j to i step -1
If StrComp(mArray(j), p, 1) <= 0 Then Exit For
Next
If i <= j Then
t = mArray(i)
mArray(i) = mArray(j)
mArray(j) = t
i = i+1
j = j-1
End if
Loop Until i > j
If FromPos < j Then quicksort mArray, FromPos, j
If ToPos > i Then quicksort mArray, i, ToPos
End Sub
' end of Mp3list.vbs-Skizze
Tut mir Leid, dass ich da so begriffsstutzig bin, aber ich versteh nicht, an welcher Stelle Du hängst.
HTH
Biber
ich bin immer noch nicht ganz sicher, ob ich Deine Anforderung verstehe.
Jedenfalls verstehe ich nicht so recht die Schwierigkeit der Aufgabe.
Ich bin nun nicht der VBS-Crack, aber selbst wenn ich den Umweg über einen VBS-Schnipsel gehe statt es mit zwei,drei Batchzeilen zu machen, halte ich für lösbar (oder habe es eben nicht verstanden).
Deshalb nochmal an einem schnellen Beispiel. Wenn ich ein Verzeichnis "Z:\Lena - Wunden geschehen" habe mit folgenden *.mp3's
$cmd$dir /b *.mp3
03 - Lena Ich sing noch mehr.mp3
04 - Lena Bin ganz heiser.mp3
#08 - Lenas Papa - Summt mit.mp3
17 Hans Wurst - Nochn Song.mp3
11---Hans Wurst - Ein Song.mp3
aaHansiWurst DrittSong.mp3
02 - Lena Ich singe mehr.mp3
01 - Lena Ich singe was.mp3
...und ich jage den unten geposteten Schnipsel drüber
Z:\Lena - Wunden geschehen>
$cmd$cscript //nologo z:\Mp3List.vbs
--> dann erhalte ich
(--Inhalt "Lena - Wunden geschehen - Playlist.m3u")
Lenas Papa - Summt mit.mp3
Lena Ich singe was.mp3
Lena Ich singe mehr.mp3
Lena Ich sing noch mehr.mp3
Lena Bin ganz heiser.mp3
Hans Wurst - Ein Song.mp3
Hans Wurst - Nochn Song.mp3
HansiWurst DrittSong.mp3
..und
(--Inhalt "Lena - Wunden geschehen - Tracklist.txt")
#08 - Lenas Papa - Summt mit.mp3
01 - Lena Ich singe was.mp3
02 - Lena Ich singe mehr.mp3
03 - Lena Ich sing noch mehr.mp3
04 - Lena Bin ganz heiser.mp3
11---Hans Wurst - Ein Song.mp3
17 Hans Wurst - Nochn Song.mp3
aaHansiWurst DrittSong.mp3
Ist das so das, was Du meintest?
Sonst ändere an diesem Beispiel bitte noch mal den SOLL-Output.
Der angepasste Schnipsel:
'-------snipp Mp3List.vbs
Set oFso = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFso.GetFolder(".")
Set oFiles = oFolder.Files
Dim MP3s(), n
n = 0
For Each oFile in oFiles
If LCase(Right(oFile,4))=".mp3" Then
ReDim Preserve MP3s(n)
MP3s(n) = oFile.Name
n = n+1
End If
Next
If n=0 Then
MsgBox "Es wurden keine MP3s gefunden!"
quit
End if
quicksort MP3s, 0, n-1
sPlaylist = oFolder.Name & " - Playlist.m3u"
sTracklist = oFolder.Name & " - Tracklist.txt"
Set oP=oFso.opentextfile(sPlaylist,2,true)
Set oT=oFso.opentextfile(sTracklist,2,true)
For i = 0 to n-1
oT.writeline MP3s(i) 'In der Tracklist ist der Dateiname Eins zu Eins
intDelimpos= Instr(Left(Mp3s(i), 6), "-")
IF intdelimpos = 0 then intDelimpos = Instr(Left(Mp3s(i), 6), " ")
Do while ( Mid(Mp3s(i),intdelimpos+1,1)=" " or Mid(Mp3s(i),intdelimpos+1,1)="-")
intDelimPos=intDelimpos+1
Loop
If intdelimpos= 0 then
intdelimpos=InputBox ("Titel '"& left(Mp3s(i),25) & "....'" & vbCRLF _
& "Wieviele Zeichen sollen jeweils vom Anfang weggeschnitten werden?",_
"Kein Delimiter erkennbar",0)
end if
oP.writeline Mid(MP3s(i),intdelimpos+1) ' Playlist.. ohne Prefix/TrackNo
Next
oP.close
oT.close
'------------ Unchanged ab hier
MsgBox n & " .mp3 Dateien in Tracklist/Playlist " & sTracklist & "/.m2u geschrieben."
Sub quicksort (mArray, FromPos, ToPos)
i = FromPos
j = ToPos
p = mArray((i+j)/2)
Do
For i = i to j
If StrComp(mArray(i), p, 1) >= 0 Then Exit For
Next
For j = j to i step -1
If StrComp(mArray(j), p, 1) <= 0 Then Exit For
Next
If i <= j Then
t = mArray(i)
mArray(i) = mArray(j)
mArray(j) = t
i = i+1
j = j-1
End if
Loop Until i > j
If FromPos < j Then quicksort mArray, FromPos, j
If ToPos > i Then quicksort mArray, i, ToPos
End Sub
' end of Mp3list.vbs-Skizze
Tut mir Leid, dass ich da so begriffsstutzig bin, aber ich versteh nicht, an welcher Stelle Du hängst.
HTH
Biber

Ich ehrlich gesagt auch nicht 
Und ich mach' eine Menge Schei* mit VBS...
Lonesome Walker
Und ich mach' eine Menge Schei* mit VBS...
Lonesome Walker