基于文件类型和大小的 Windows 文件关联

Suj*_*dke 2 windows vlc-media-player file-association powerdvd

我的硬盘上存储了很多视频。那些是 dvd 或更低质量的(480p,最大尺寸 7GB),我想使用 vlc 打开。高清画质(720p、1080p、7GB以上),我想用PowerDVD打开。

所有文件都具有相同的扩展名 (.mkv)。是否可以在 Windows 中对文件关联进行编程,以便它首先查看文件类型(在本例中为 mkv),然后查看文件大小。它应该根据其大小自动为 mkv 文件使用 vlc 或 PowerDVD。

请让我知道是否可以进行这样的调整。

Kar*_*ran 5

您必须将 MKV 扩展名与批处理文件或 PowerShell/VB 脚本相关联,然后执行文件大小检查并调用适当的应用程序。

以下是如何使用批处理文件执行此操作:

  1. 打开regedit,导航到HKEY_CLASSES_ROOT\.mkv并记下(默认)值。这是ProgID。让我们假设它是mkvfile

  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"
    )
    
    Run Code Online (Sandbox Code Playgroud)

以下是使用 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
    
    Run Code Online (Sandbox Code Playgroud)

注意#1:显然需要根据需要修改路径。此外,上面的代码将 500MB(= 524288000 字节)设置为阈值,因此也可以根据您的需要进行更改(尽管非常大的值可能仅在 VBScript 中才有可能)。

注意#2:如果您不确定手动编辑注册表,您可以随时使用FileTypesMan 等实用程序来执行步骤 1-2。

注意#3:使用批处理文件会导致控制台窗口闪烁,这可能会令人恼火。现在可以使用诸如Hidden Start或 VBScript 之类的东西来隐藏它,但是为什么首先直接使用 VBScript 更好呢?