Ställ omedelbart upp bekanta filassociationer

Automatisk inställning av filassociationer, det vill säga att välja ett program som öppnar en fil från Explorer/Finder. Och jag delar.

Problem först. Filer med de nödvändiga tilläggen öppnas ofta inte av någonting som standard, och om de öppnas, då av vissa iTunes. Under Windows går de nödvändiga associationerna ibland helt förlorade när man installerar (eller till och med avinstallerar) program: ibland avinstallerar man GIMP, och ico-filer tas över från den vanliga filvisaren till standardfotogalleriet. Varför? För vad? Okänd... Tänk om jag hittade en ny editor eller, av olika anledningar, en ny installation? Vad händer om det finns mer än en dator? I allmänhet är det sådan underhållning att klicka på möss i dialoger.

Istället sparade jag två filer på Dropbox och nu kan jag återställa datorvärlden till det normala nästan direkt. Och vad har du väntat på så många år... Härnäst är receptet för Windows och macOS.

Windows

I Windows-konsolen cmd.exe detta görs i två steg:

ftype my_file_txt="C:Windowsnotepad.exe" "%1"
assoc .txt=my_file_txt

Ändringar träder i kraft omedelbart. Trots att föreningen är registrerad för en specifik användare behöver dessa kommandon av någon anledning köras som administratör. Och glöm inte att dubbla procentsymbolen (%%1) när du kör från en bat-fil. Den magiska världen av Windows 7 Ultimate 64-bitars...

MacOS

I MacOS är det bekvämt att ställa in associationer med hjälp av verktyget duti. Den installeras via brew install duti. Användningsexempel:

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

Ändringar träder i kraft omedelbart, ingen sudo krävs. Här är argumentet "com.apple.TextEdit" det så kallade "bundle id" för programmet vi behöver. Argumentet "redigerare" är associationstypen: "redigerare" för redigering, "visare" för visning, "alla" för allt.

Du kan hitta "paket-id" så här: om det finns "/Applications/Sublime Text.app" av den tredje versionen, kommer dess paket-ID att vara "com.sublimetext.3", eller något annat:

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

Testad på macOS Sierra.

Slutligt skript för 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

Slutligt skript för 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

Källa: will.com

Lägg en kommentar