その買うを、もっとハッピーに。|ハピタス

VBScriptを使ってMP3エンコード【Lame版】

コメント欄にてMP3エンコードを行うコマンドラインツールをご紹介頂いて、
Lame版を作成しました。こっちの方が全然良いですね!
iTunesの場合、よっこいしょとiTunesが起動しないとエンコードは始まりませんし、
表面的にiTunesが立ち上がってるのも分かり、欝陶しいです。
Lameだと直ぐにエンコードが始まりますし、コマンドラインなので処理も非表示に出来ます。

前準備


Lameをインストールする訳ですが、インストールといっても、
dllとexeをパスの通ってるsystem32とかにコピーすれば良いだけです。
ですが、ヘルプ含めフォルダごと取っておきたかったので、
Program Filesに置くことにし、そこへのパスを通しました。
下記VBScriptで「Program Filesへコピー → パスを通す作業」を行ってくれます。
使い方は、LameフォルダをVBSファイルにドラッグします。

'LameSetup.vbs
Option Explicit

Const SCRIPT_NAME = "Lame設定スクリプト"
Dim objArgs, objWS, fs
Dim lame_folder_path, EnvPathVal, NewEnvPathVal

Set objWS = CreateObject("WScript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments

'Lameフォルダのコピー
If objArgs.Count = 0 Then WScript.Quit
If fs.FolderExists(objArgs(0)) = False Then
    MsgBox "Lameフォルダを選択して下さい。"
    WScript.Quit
End If
lame_folder_path = objWS.ExpandEnvironmentStrings("%PROGRAMFILES%") & "\" & fs.GetBaseName(objArgs(0))
fs.CopyFolder objArgs(0), lame_folder_path, True

'システム環境変数の設定
EnvPathVal = objWS.Environment("SYSTEM").Item("PATH")
If Right(EnvPathVal, 1) = ";" Then
	NewEnvPathVal = EnvPathVal & lame_folder_path & ";"
Else
	NewEnvPathVal = EnvPathVal & ";" & lame_folder_path & ";"
End If
If InStr(EnvPathVal, lame_folder_path) Then
    MsgBox "パスは既に登録されています。", vbExclamation, SCRIPT_NAME
Else
    objWS.Environment("SYSTEM").Item("PATH") = NewEnvPathVal
    MsgBox "完了しましたノ´Д`)ノ", , SCRIPT_NAME
End If

Set objWS = Nothing
Set fs = Nothing


※このスクリプトによるいかなる損害も責任を負いませんので、ご使用は自己責任の範囲でお願いします。

エンコードVBScriptを使ってみる


今回は結構手抜きです(笑)

'MP3ConvOnLame.vbs
Option Explicit

Dim objWS, fs, objArgs
Dim ipath, opath, Command
Dim i

Set objWS = CreateObject("WScript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then WScript.Quit

For i = 0 To objArgs.Count - 1
    Select Case UCase(fs.GetExtensionName(objArgs(i)))
        Case "WAV", "AIF", "AIFF"
            ipath = """" & objArgs(i) & """"
            opath = """" & Left(objArgs(i), InStrRev(objArgs(i), ".")) & "mp3"""
            Command = "lame -h " & ipath & " " & opath
            objWS.Run Command, 0, True
    End Select
Next

Set objWS = Nothing
Set fs = Nothing

MsgBox "完了しましたノ´Д`)ノ", , "MP3 On Lame"


前回同様、WAVファイルなどをドラッグ、若しくは右クリックの「送る」を使います。
前回とは違い、コンバート後フォルダは作りません。手抜きしました(笑)
元ファイルと同じフォルダにコンバート処理済みデータが出来ます。
また、既に同じ名前のファイルがある場合は上書きされます。


また、色々と引数を指定すれば音質やステレオかモノラル、処理速度など細かく設定出来るのですが、
これも面倒なので「recommended」と書いてあった「-h」だけ指定して、高音質モードにしてます。
なので、処理速度は遅いかもしれません。



Windows自動処理のためのWSHプログラミングガイド

Windows自動処理のためのWSHプログラミングガイド