Personalize instantaneamente associações de arquivos familiares

Automatizou a tarefa de associação de arquivos, ou seja, a escolha do programa que abrirá o arquivo no Explorer / Finder. E compartilhar.


Primeiro, os problemas. Os arquivos das extensões necessárias geralmente não abrem por padrão com nada e, se abrirem, com algum iTunes. No Windows, as associações necessárias, por acaso, são completamente perdidas ao instalar (ou até desinstalar) programas: você demoliu, costumava ser, GIMP e ico-files são transferidos do visualizador de arquivos normal para a Galeria de Fotos padrão. Porque Porque É desconhecido ... E se você encontrar um novo editor ou, por várias razões, uma nova instalação? E se o computador não estiver sozinho? Em geral, clicar com o mouse nas caixas de diálogo é um entretenimento.


Em vez disso, salvei dois arquivos no Dropbox e agora posso trazer o mundo dos computadores ao seu estado familiar quase instantaneamente. E o que está esperando há tantos anos ... A seguir está a receita para Windows e macOS.


Windows


No console do Windows cmd.exe isso é feito em dois estágios:


 ftype my_file_txt="C:\Windows\notepad.exe" "%1" assoc .txt=my_file_txt 

As alterações entram em vigor imediatamente. Apesar do fato de a associação estar registrada para o usuário atual, é necessário executar esses comandos por algum motivo com direitos de administrador. E não se esqueça de dobrar o símbolo de porcentagem (%% 1) ao iniciar a partir do arquivo bat. O mundo mágico do Windows 7 Ultimate de 64 bits ...


UPD Os experimentos mostraram que manipulações com ftype / assoc afetam todos os usuários na máquina (nosso escritório editorial não esperava essa virada). No entanto, o esquema permanece operacional. Mas vou descobrir como não afetar o resto.


macOS


Em Makoshi, as associações são convenientes para definir com o utilitário duti . É instalado através do brew install duti . Exemplo de uso:


 duti -s com.apple.TextEdit .txt "editor" 

As alterações entram em vigor imediatamente; o sudo não é necessário. Aqui o argumento "com.apple.TextEdit" é o chamado "ID do pacote" do programa que precisamos. O argumento "editor" é o tipo de associação: "editor" para edição, "visualizador" para visualização, "tudo" para tudo.


Você pode encontrar o "ID do pacote configurável" assim: se houver um "/ Applications / Sublime Text.app" da terceira versão, o pacote inativo terá "com.sublimetext.3" ou algum outro:


 > osascript -e 'id of app "Sublime Text"' com.sublimetext.3 

Testado no macOS Sierra.


Script final para Windows (.bat)


 @echo off set XNVIEW=C:\Program Files (x86)\XnView\xnview.exe set SUBLIME=C:\Program Files\Sublime Text 3\sublime_text.exe set FOOBAR=C:\Program Files (x86)\foobar2000\foobar2000.exe call :assoc_ext "%SUBLIME%" txt md js json css java sh yaml call :assoc_ext "%XNVIEW%" png gif jpg jpeg tiff bmp ico call :assoc_ext "%FOOBAR%" flac fla ape wav mp3 wma m4a ogg ac3 goto :eof :assoc_ext set EXE=%1 shift :loop if "%1" neq "" ( ftype my_file_%1=%EXE% "%%1" assoc .%1=my_file_%1 shift goto :loop ) goto :eof 

Script final para macOS (.sh)


 #!/bin/bash # this allows us terminate the whole process from within a function trap "exit 1" TERM export TERM_PID=$$ # check `duti` installed command -v duti >/dev/null 2>&1 || \ { echo >&2 "duti required: brew install duti"; exit 1; } get_bundle_id() { osascript -e "id of app \"${1}\"" || kill -s TERM $TERM_PID; } assoc() { bundle_id=$1; shift role=$1; shift while [ -n "$1" ]; do echo "setting file assoc: $bundle_id .$1 $role" duti -s "$bundle_id" ".${1}" "$role" shift done } SUBLIME=$(get_bundle_id "Sublime Text") TEXT_EDIT=$(get_bundle_id "TextEdit") MPLAYERX=$(get_bundle_id "MPlayerX") assoc "$SUBLIME" "editor" txt md js jse json reg bat ps1 cfg sh bash yaml assoc "$MPLAYERX" "viewer" mkv mp4 avi mov webm assoc "$MPLAYERX" "viewer" flac fla ape wav mp3 wma m4a ogg ac3 

Source: https://habr.com/ru/post/pt449820/


All Articles