'v2.4***************************************************** ' File: mp3-bitrate-change.vbs ' Autor: dieseyer@gmx.de ' dieseyer.de ' ' Wandelt alle mp3-Dateien im aktuellen Ordner in Dateien ' mit einer BitRate von xxx k um. ' ' Dazu am Besten die VBS auf den Desktop (und c:\lame.exe) ' ablegen, den (Windows-) Explorer nicht! im Volbild-Modus ' starten und die Verzeichnisse mit der Maus auf die VBS ' ziehen und fallen lassen . . . ' ' Die Dateinamen der ALTEN Dateien enden mit ".mp3-" '********************************************************* Option Explicit Dim Song, Artist Dim Text, Text1, Text2, index, Txt(), i1, i2, newpath Dim fso, fo, fi, FileOut Dim LameExe, LameParam, ZielVerz, Ziel, Quelle, WSHShell Dim oArgs, Verz, BitRate, BitRatOrigMin Set WSHShell = WScript.CreateObject("WScript.Shell") Set fso = WScript.CreateObject("Scripting.FileSystemObject") LameExe = "c:\lame.exe" If not (fso.FileExists(LameExe)) Then MsgBox """" & UCase(LameExe) & """ nicht vorhanden!", , WScript.ScriptName WScript.Quit End If BitRate = 128 set oArgs = Wscript.Arguments ' hole Argumentsauflistung If oArgs.Count > 0 Then ' Ja, hole Name Verz = """" & oArgs.item(0) & """" ' erster Parameter Verz = oArgs.item(0) ' erster Parameter Else Text = "Das Ganze funktioniert so:" & vbCRLF & vbCRLF Text = Text & "Mit der Maus ein Verzeichnis mit mp3-Dateien" & vbCRLF Text = Text & "auf das Skript ziehen und fallen lassen - JETZT" & vbCRLF Text = Text & "werden alle gefundenen mp3-Dateien in Dateien " & vbCRLF Text = Text & "mit " & BitRate & "k BitRate um-en-codiert. Die ALTEN Dateien" & vbCRLF Text = Text & "enden dann mit "".mp3- . . . """ & vbCRLF MsgBox Text, , WScript.ScriptName WScript.Quit End If BitRate = InputBox ("In welche Bitrate sollen die mp3-Dateien" & vbCRLF & vbCRLF & "gewandelt werden?", WScript.ScriptName, BitRate) If Bitrate = "" then WScript.Quit i2 = 0 Text = "" Set fo = fso.GetFolder(Verz) Set fi = fo.Files ' Datei-Auflistung holen For Each i1 In fi ' hole Liste aller Dateien if Ucase(Right(i1.name,4)) = ".MP3" then ' hole nur mp3 - Dateien Quelle = Verz & "\" & i1.Name & "-" Ziel = Verz & "\" & i1.Name if fso.FileExists(Ziel) then ' wenn es eine .mp3- - Datei if fso.GetFile(Ziel).Size = 0 then ' mit 0 Byte Größe gibt fso.DeleteFile(Ziel), True ' wird diese gelöscht WSHShell.Popup "0 Byte große Datei " & Ziel & " wurde gelöscht", 3, WScript.ScriptName End If End If if not fso.FileExists(Quelle) then Set Text1 = fso.GetFile(Ziel) Text1.Move Quelle End If if not fso.GetFile(Quelle).Size < fso.GetDrive(Left(Quelle,3)).AvailableSpace then MsgBox "Auf " & Verz & " steht nicht genügend Platz zur Verfügung!", , WScript.ScriptName WScript.Quit ' wenn weniger als die Größe der Quelle-Datei auf End If ' dem Ziellaufwerk frei ist - Abbruch if not FSO.FileExists(Ziel) then ' wenn es noch keine -??????.mp3-Datei gibt ' LameParam = "cmd /k " & LameExe & " -b " & BitRate & " -h --mp3input """ & Quelle & """ """ & Ziel & """" LameParam = LameExe & " -b " & BitRate & " -h --mp3input """ & Quelle & """ """ & Ziel & """" WSHShell.Run LameParam , , True i2 = i2+1 Text = Text & "(" & i2 & ") " & vbTab & "... ~" & Ziel & vbCRLF End If End If Next Set fo = Nothing ' Datei schließen If i2 = 0 then Text = "Es wurden keine Dateien zum Wandeln gefunden." If i2 > 0 then Text = Verz & vbCRLF & vbCRLF & "enthält folgende mp3-Dateien mit " & BitRate & "k-BitRate:" & vbCRLF & vbCRLF & Text Set FileOut = fso.OpenTextFile(Verz & "\" & WScript.ScriptName & ".log", 8, true) ' Datei zum Erweitern öffnen (notfals anlegen) fileOut.WriteLine (Now() & " " & Text) fileOut.Close Set FileOut = Nothing ' Datei schließen MsgBox Text, , WScript.ScriptName