http://dieseyer.de • all rights reserved • © 2011 v11.4

'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


http://dieseyer.de • all rights reserved • © 2011 v11.4