ファイルの種類とサイズに基づいた Windows ファイルの関連付け

ファイルの種類とサイズに基づいた Windows ファイルの関連付け

ハードドライブにたくさんのビデオが保存されています。DVD またはそれ以下の品質 (480p、最大サイズ 7GB) のビデオは、VLC を使用して開きます。HD 品質 (720p、1080p、サイズが 7GB を超える) のビデオは、PowerDVD を使用して開きます。

すべてのファイルの拡張子は同じです (.mkv)。Windows でファイルの関連付けをプログラムして、最初にファイルの種類 (この場合は mkv) を確認し、次にファイル サイズを確認することは可能ですか。mkv ファイルのサイズに基づいて、vlc または PowerDVD のいずれかを自動的に使用する必要があります。

そのような調整が可能かどうか教えてください。

答え1

MKV 拡張子をバッチ ファイルまたは PowerShell/VB スクリプトに関連付けて、ファイル サイズのチェックを実行し、適切なアプリケーションを呼び出す必要があります。

バッチファイルでこれを行う方法は次のとおりです。

  1. 開けるレジストリエディタに移動してHKEY_CLASSES_ROOT\.mkvメモします(デフォルト)価値です。これはプログラムID. 仮にmkvファイル

  2. 移動してHKEY_CLASSES_ROOT\mkvfile\shell\open\command変更する(デフォルト)値を のようなものに変更します"D:\MKVSizeCheck.bat" "%1"

  3. 次に、D:\MKVSizeCheck.bat次の内容のバッチ ファイルを作成します。

    if %~z1 leq 524288000 (
        start "" /max "C:\Program Files\VLC\VLC.exe" "%~1"
    ) else (
        start "" /max "C:\Program Files\PowerDVD\PowerDVD.exe" "%~1"
    )
    

VBScript でこれを行う方法は次のとおりです。

  1. 同上。

  2. 移動してHKEY_CLASSES_ROOT\mkvfile\shell\open\command変更する(デフォルト)値を のようなものに変更しますwscript //B "D:\MKVSizeCheck.vbs" "%1"

  3. 次に、D:\MKVSizeCheck.vbs次の内容のファイルを作成します。

    set objArgs = WScript.Arguments
    set objShell = WScript.CreateObject("WScript.Shell")
    set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
    if objFSO.GetFile(objArgs.Item(0)).Size <= 524288000 then
        objShell.Run """C:\Program Files\VLC\VLC.exe"" """ & objArgs.Item(0) & """", 3, false
    else
        objShell.Run """C:\Program Files\PowerDVD\PowerDVD.exe"" """ & objArgs.Item(0) & """", 3, false
    end if
    

注 #1: 当然のことながら、必要に応じてパスを変更します。また、上記のコードではしきい値として 500 MB (= 524288000 バイト) が設定されているため、必要に応じてこれも変更してください (ただし、非常に大きな値は VBScript でのみ可能な場合があります)。

注2: 次のようなユーティリティをいつでも使用できます。ファイルタイプマンレジストリを手動で編集するかどうか不明な場合は、手順 1 ~ 2 を実行してください。

注3: バッチファイルを使用すると、コンソールウィンドウが点滅して煩わしい場合があります。これを非表示にするには、次のようにします。隠れたスタートまたは VBScript ですが、そもそも VBScript を直接使用する方がよいのに、なぜわざわざそうするのでしょうか。

関連情報