Sesuaikan asosiasi file yang dikenal secara instan

Secara otomatis tugas asosiasi file, yaitu, pilihan program yang akan membuka file dari Explorer / Finder. Dan berbagi.


Pertama, masalahnya. File dari ekstensi yang diperlukan sering tidak terbuka secara default dengan apa pun, dan jika dibuka, maka dengan beberapa iTunes. Di bawah windows, asosiasi yang diperlukan, itu terjadi, benar-benar hilang ketika menginstal (atau bahkan menghapus) program: Anda menghancurkan, dulu, GIMP, dan file ico ditransfer dari penampil file biasa ke Galeri Foto standar. Mengapa Mengapa Tidak diketahui ... Dan jika Anda menemukan editor baru atau, karena berbagai alasan, instalasi baru? Dan apakah komputer itu tidak sendirian? Secara umum, mengklik dengan mouse dalam dialog adalah suatu hiburan.


Sebagai gantinya, saya menyimpan dua file di Dropbox dan sekarang saya dapat membawa dunia komputer ke keadaan yang sudah dikenalnya secara instan. Dan apa yang telah menunggu selama bertahun-tahun ... Selanjutnya adalah resep untuk Windows dan macOS.


Windows


Di cmd.exe konsol Windows cmd.exe ini dilakukan dalam dua tahap:


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

Perubahan segera berlaku. Terlepas dari kenyataan bahwa asosiasi terdaftar untuk pengguna saat ini, Anda perlu menjalankan perintah ini untuk beberapa alasan dengan hak administrator. Dan jangan lupa untuk menggandakan simbol persen (%% 1) ketika mulai dari file bat. Dunia ajaib Windows 7 Ultimate 64-bit ...


UPD Percobaan menunjukkan bahwa manipulasi dengan ftype / assoc mempengaruhi semua pengguna di mesin (kantor editorial kami tidak mengharapkan perubahan seperti itu). Namun, skema tersebut tetap operasional. Tetapi saya akan mencari tahu bagaimana tidak memengaruhi sisanya.


macOS


Dalam makoshi, asosiasi mudah diatur dengan utilitas duti . Ini diinstal melalui brew install duti . Contoh penggunaan:


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

Perubahan berlaku segera, sudo tidak diperlukan. Di sini argumen "com.apple.TextEdit" adalah yang disebut "bundle id" dari program yang kita butuhkan. Argumen "editor" adalah tipe asosiasi: "editor" untuk diedit, "viewer" untuk melihat, "all" untuk semuanya.


Anda dapat menemukan "bundle id" seperti ini: jika ada "/ Applications / Sublime Text.app" dari versi ketiga, maka bundel idle akan memiliki "com.sublimetext.3", baik, atau yang lain:


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

Diuji pada macOS Sierra.


Skrip final untuk 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 

Skrip akhir untuk 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/id449820/


All Articles