Automatiserade filassociationsuppgifter, det vill sÀga valet av program som ska öppna en fil frÄn Explorer/Finder. Och jag delar med mig.
Först problemet. Filer med nödvÀndiga filÀndelser öppnas ofta inte som standard med nÄgot, och om de gör det Àr det ofta nÄgon sorts iTunes. PÄ Windows kan nödvÀndiga associationer helt gÄ förlorade vid installation (eller ens avinstallering) av program; du kan radera GIMP, och dÄ kan.ico-filer gÄ frÄn den vanliga filvisaren till standard Photo Gallery. Varför? Varför? Ingen aning... Och om man hittar en ny redigerare eller, av olika skÀl, en ny installation? Och om datorn inte Àr ensam? Att klicka med musen i dialogrutor Àr inte direkt underhÄllande.
IstÀllet sparade jag tvÄ filer pÄ Dropbox och nu kan datorvÀrlden ÄterstÀllas till sitt normala tillstÄnd nÀstan omedelbart. Vad har jag vÀntat pÄ i alla dessa Är... HÀr kommer receptet för Windows och macOS.
Windows
I Windows-konsolen cmd.exe görs det i tvÄ steg:
ftype my_file_txt="C:\Windows\notepad.exe" "%1"
assoc .txt=my_file_txtĂndringarna trĂ€der i kraft omedelbart. Trots att associationen skrivs för den specifika anvĂ€ndaren, mĂ„ste dessa kommandon köras av nĂ„gon anledning som administratör. Och glöm inte att dubbelteckna procenttecknet (%%1) nĂ€r du kör frĂ„n en bat-fil. Den magiska vĂ€rlden av Windows 7 Ultimate 64-bit...
macOS
I macOS Àr det enkelt att stÀlla in associationer med verktyget . Det installeras via brew install duti. Exempel pÄ anvÀndning:
duti -s com.apple.TextEdit .txt "editor"Ăndringarna trĂ€der i kraft omedelbart, sudo krĂ€vs inte. HĂ€r Ă€r argumentet âcom.apple.TextEditâ det sĂ„ kallade âbundle idâ för det programmet vi behöver. Argumentet âeditorâ anger typ av association: âeditorâ för redigering, âviewerâ för visning, âallâ för allt.
För att hitta âbundle idâ kan du göra sĂ„ hĂ€r: om det finns â/Applications/Sublime Text.appâ i version tre, sĂ„ har den bundle-id âcom.sublimetext.3â, eller nĂ„got annat:
> osascript -e 'id of app "Sublime Text"'
com.sublimetext.3Verifierat pÄ macOS Sierra.
Slutgiltigt skript för 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 :eofSlutgiltigt 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 "${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 ac3KĂ€lla: habr.com
