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

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

我的硬盘上存储了许多视频。我想使用 vlc 打开 DVD 或更低质量(480p,最大 7GB)的视频。我想使用 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 就更好了,那么为什么还要费心呢?

相关内容