基於檔案類型和大小的 Windows 檔案關聯

基於檔案類型和大小的 Windows 檔案關聯

我的硬碟上儲存了很多影片。 DVD 或較低品質的(480p,最大大小 7GB),我想使用 vlc 開啟。我想使用 PowerDVD 開啟高清品質(720p、1080p、大小大於 7GB)的內容。

所有檔案都具有相同的副檔名 (.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:顯然根據需要修改路徑。另外,上面的程式碼將 500MB(= 524288000 位元組)設為閾值,因此也可以根據您的需求進行更改(儘管只有在 VBScript 中才可能存在非常大的值)。

注意#2:您始終可以使用類似的實用程序文件類型管理器如果您不確定是否要手動編輯註冊表,請執行步驟 1-2。

注意#3:使用批次檔會導致控制台視窗閃爍,這可能會令人惱火。現在可以使用類似的東西來隱藏隱藏的開始或 VBScript,但既然直接使用 VBScript 比較好,為什麼還要麻煩呢?

相關內容