Ассоциация файлов Windows на основе типа файла и размера

Ассоциация файлов Windows на основе типа файла и размера

У меня на жестком диске хранится много видео. Те, которые в формате DVD или более низкого качества (480p, максимальный размер 7 ГБ), я хотел бы открыть с помощью vlc. Те, которые в качестве HD (720p, 1080p, размер больше 7 ГБ), я хотел бы открыть с помощью PowerDVD.

Все файлы имеют одинаковое расширение (.mkv). Возможно ли запрограммировать ассоциацию файлов в Windows так, чтобы она сначала смотрела на тип файла (в данном случае mkv), а затем на размер файла. Она должна автоматически использовать vlc или PowerDVD для файлов mkv в зависимости от их размера.

Пожалуйста, дайте мне знать, если такая корректировка возможна.

решение1

Вам придется связать расширение MKV с пакетным файлом или скриптом PowerShell/VB, который, в свою очередь, выполнит проверку размера файла и вызовет соответствующее приложение.

Вот как это сделать с помощью пакетного файла:

  1. Открытьregedit, перейдите к HKEY_CLASSES_ROOT\.mkvи отметьте(По умолчанию)значение. ЭтоProgID. Предположим, что это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 МБ (= 524288000 байт) в качестве порога, поэтому измените его в соответствии с вашими потребностями (хотя очень большие значения могут быть возможны только в VBScript).

Примечание №2: Вы всегда можете воспользоваться такой утилитой, какТипы файловManвыполнить шаги 1-2, если вы не уверены в ручном редактировании реестра.

Примечание №3: Использование пакетного файла приведет к миганию окна консоли, что может раздражать. Теперь это можно скрыть, используя что-то вродеСкрытый стартили VBScript, но зачем беспокоиться, если лучше сразу использовать VBScript.

Связанный контент