Файлдык ассоциацияларды автоматтык түрдө орнотуу, башкача айтканда, Explorer/Finderден файлды ача турган программаны тандоо. А мен бөлүшөм.
Проблемалар биринчи. Керектүү кеңейтүүлөрү бар файлдар демейки боюнча эч нерсе менен ачылбайт, эгер алар ачылса, анда кээ бир iTunes тарабынан. Windows шартында, программаларды орнотуп жатканда (ал тургай, алып салууда) керектүү ассоциациялар кээде толугу менен жоголот: кээде сиз GIMPди өчүрөсүз, ал эми ico файлдары кадимки файл көрүүчүдөн стандарттуу Сүрөт галереясына кабыл алынат. Неге? Эмне үчүн? Белгисиз... Эгерде мен жаңы редакторду же ар кандай себептерден улам жаңы орнотууну тапсамчы? Эгер бирден ашык компьютер болсочу? Жалпысынан алганда, диалогдордо чычкандарды чыкылдатуу - бул көңүл ачуу.
Анын ордуна, мен Dropbox'то эки файлды сактадым жана азыр мен компьютер дүйнөсүн дээрлик заматта кадимки абалга келтире алам. Жана ушунча жылдан бери эмнени күтүп жатасыз... Кийинки Windows жана macOS үчүн рецепт.
Windows
Windows консолунда cmd.exe
бул эки этапта жүзөгө ашырылат:
ftype my_file_txt="C:Windowsnotepad.exe" "%1"
assoc .txt=my_file_txt
Өзгөртүүлөр дароо күчүнө кирет. Ассоциация белгилүү бир колдонуучу үчүн катталганына карабастан, кандайдыр бир себептерден улам бул буйруктарды администратор катары иштетүү керек. Жарганат файлынан иштеп жатканда пайыздык символду (%%1) эки эсе көбөйтүүнү унутпаңыз. Windows 7 Ultimate 64-биттин сыйкырдуу дүйнөсү…
MacOS
MacOSто утилитаны колдонуу менен ассоциацияларды коюу ыңгайлуу brew install duti
. Колдонуу мисалы:
duti -s com.apple.TextEdit .txt "editor"
Өзгөртүүлөр дароо күчүнө кирет, эч кандай sudo талап кылынбайт. Бул жерде "com.apple.TextEdit" аргументи бизге керек болгон программанын "пакет идентификатору" деп аталган нерсе. "Редактордун" аргументи - бул ассоциациянын түрү: түзөтүү үчүн "редактор", көрүү үчүн "көрүүчү", бардыгы үчүн "бардыгы".
Сиз "пакет идентификаторун" төмөнкүдөй таба аласыз: эгерде үчүнчү версиянын "/Applications/Sublime Text.app" бар болсо, анда анын таңгак идентификатору "com.sublimetext.3" же башкасы болот:
> osascript -e 'id of app "Sublime Text"'
com.sublimetext.3
macOS Sierraда сыналган.
Windows үчүн акыркы скрипт (.bat)
@echo off
set XNVIEW=C:Program Files (x86)XnViewxnview.exe
set SUBLIME=C:Program FilesSublime Text 3sublime_text.exe
set FOOBAR=C:Program Files (x86)foobar2000foobar2000.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
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 """ || 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" "." "$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: www.habr.com