Заматта тааныш файл ассоциацияларын орнотуңуз

Файлдык ассоциацияларды автоматтык түрдө орнотуу, башкача айтканда, 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то утилитаны колдонуу менен ассоциацияларды коюу ыңгайлуу duti. Бул аркылуу орнотулган 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

Комментарий кошуу