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

プロパティの概要タブの情報を取得

仕事柄複数WAVデータのサンプルレート数やビットレート数がすぐに確認出来ると良いので、VBSファイルを作成しました。
当初、考えられる方法としてWAVデータを直接読み込む方法とプロパティの概要タブから取得する2つが考えられました。
ですが、WAVデータを直接読み込む方法は高度な手法で自分の知識以上の範囲になり、時間も無いので却下。
概要タブから情報を取得しようと思った訳ですが、、思ってたより苦戦。
てっきりFileSystemObjectで取得出来るかと思い込んでました。
しかし下記のShellを利用した手法でイケました。

'GetPropaty.vbs
Option Explicit

Const SCRIPT_NAME = "プロパティ一覧表示ヽ(゜∀゜)"
Private strView
Dim objArgs, fs, f, ws
Dim i
Dim txtPath
Set objArgs = WScript.Arguments
Set fs = CreateObject("Scripting.FileSystemObject")
Set ws = WScript.CreateObject("WScript.Shell")
If objArgs.Count = 0 Then WScript.Quit
For i = 0 to objArgs.Count - 1
    If fs.FolderExists(objArgs(i)) Then
        GetPropaty objArgs(i)
    End If
Next
If strView <> "" Then
    If LenB(strView) > 1024 Then
        MsgBox "データが 1024 Byteを超えましたので、デスクトップにテキストファイルを保存します。", , SCRIPT_NAME
        txtPath = ws.SpecialFolders("Desktop") & "\GetPropatyData.txt"
        Set f = fs.OpenTextFile(txtPath, 2, True)
        f.Write strView
        f.Close
        Set f = Nothing
        ws.Run "notepad " & fs.GetFile(txtPath).ShortPath
    Else
        MsgBox strView, , SCRIPT_NAME
    End If
Else
    MsgBox "対象ファイルが見つかりませんでした。", , SCRIPT_NAME
End If
Set fs = Nothing
Set ws = Nothing

Sub GetPropaty(dpath)
    Const BIT_NUM = 32
    Const SMPL_NUM = 33
    Const CH_NUM = 34
    Dim fs, f, d
    Dim objShell, objFolder
    Dim strSmpl, strBit, strCh
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(dpath)
    For Each f In fs.GetFolder(dpath).Files
        Select Case UCase(fs.GetExtensionName(f.Name))
            Case "WAV"
                With objFolder
                    strSmpl = .GetDetailsOf(.ParseName(f.Name), SMPL_NUM)
                    strBit = .GetDetailsOf(.ParseName(f.Name), BIT_NUM)
                    strCh = .GetDetailsOf(.ParseName(f.Name), CH_NUM)
                End With
                strView = strView & f.Name & " → " & strSmpl & " | " & strBit & " | " & strCh & vbCrLf
        End Select
    Next
    Set objFolder = Nothing
    Set objShell = Nothing
    For Each d In fs.GetFolder(dpath).SubFolders
        GetPropaty d.Path
    Next
    Set d = Nothing
    Set fs = Nothing
End Sub

仕様


WAVフォルダが入ってるフォルダをVBSファイルにドラッグ&ドロップします。
複数フォルダでも可能です。
また、更にフォルダが入っている場合、最下層までループします。(再帰処理)
WAVファイルがあった場合は一覧をメッセージボックスに表示します。


概要タブのメッセージボックス


本当は上のメッセージボックスのように表示だけさせてパッと確認出来るお手軽なものが良かったのですが、メッセージボックスの仕様上1024Byte以上は表示出来ないので、1024Byteを超えた場合はデスクトップにテキストを保存して直後にメモ帳で開きます。



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

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