Asociación de archivos de Windows según el tipo de archivo y luego el tamaño

Asociación de archivos de Windows según el tipo de archivo y luego el tamaño

Tengo muchos videos almacenados en mi disco duro. Los que son de DVD o de menor calidad (480p, tamaño máximo 7 GB), me gustaría abrirlos usando VLC. Los que son de calidad HD (720p, 1080p, tamaño superior a 7 GB), me gustaría abrirlos usando PowerDVD.

Todos los archivos tienen la misma extensión (.mkv). ¿Es posible programar la asociación de archivos en Windows, de modo que primero mire el tipo de archivo (mkv en este caso) y luego también el tamaño del archivo? Debería usar automáticamente vlc o PowerDVD para archivos mkv, según su tamaño.

Avíseme si tal ajuste es posible.

Respuesta1

Tendrá que asociar la extensión MKV con un archivo por lotes o un script de PowerShell/VB que a su vez realiza la verificación del tamaño del archivo e invoca la aplicación adecuada.

A continuación se explica cómo hacerlo con un archivo por lotes:

  1. Abiertoregedit, navegue hasta HKEY_CLASSES_ROOT\.mkvy observe el(Por defecto)valor. Este es elID de programa. Supongamos que esarchivo mkv.

  2. Navegue HKEY_CLASSES_ROOT\mkvfile\shell\open\commandy modifique el(Por defecto)valor a algo como "D:\MKVSizeCheck.bat" "%1".

  3. Ahora cree el D:\MKVSizeCheck.batarchivo por lotes con el siguiente contenido:

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

Aquí se explica cómo hacerlo con VBScript:

  1. Lo mismo que arriba.

  2. Navegue HKEY_CLASSES_ROOT\mkvfile\shell\open\commandy modifique el(Por defecto)valor a algo como wscript //B "D:\MKVSizeCheck.vbs" "%1".

  3. Ahora cree el D:\MKVSizeCheck.vbsarchivo con el siguiente contenido:

    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
    

Nota #1: Modifique las rutas según sea necesario, obviamente. Además, el código anterior establece 500 MB (= 524288000 bytes) como umbral, así que cámbielo también según sus necesidades (aunque es posible que valores muy grandes solo sean posibles en VBScript).

Nota #2: Siempre puedes usar una utilidad comoTiposdearchivohombresiga los pasos 1 y 2 si no está seguro de editar manualmente el registro.

Nota #3: El uso de un archivo por lotes hará que parpadee una ventana de la consola, lo que puede resultar irritante. Ahora esto se puede ocultar usando algo comoInicio ocultoo VBScript, pero ¿por qué molestarse cuando es mejor usar VBScript directamente en primer lugar?

información relacionada