Otomatik mete asosyasyon dosye, se sa ki, chwazi yon pwogram ki pral louvri yon dosye soti nan Explorer / Chèche. E mwen pataje.
Pwoblèm premye. Dosye ak ekstansyon ki nesesè yo souvan pa louvri pa anyen pa default, epi si yo louvri, Lè sa a, pa kèk iTunes. Anba Windows, asosyasyon ki nesesè yo pafwa konplètman pèdi lè enstale (oswa menm dezenstalasyon) pwogram yo: pafwa ou dezenstale GIMP, ak dosye ico yo pran sou soti nan visualiseur dosye abityèl la nan Galeri foto estanda. Poukisa? Pou kisa? Enkoni... E si mwen jwenn yon nouvo editè oswa, pou plizyè rezon, yon nouvo enstalasyon? E si gen plis pase yon òdinatè? An jeneral, klike sou sourit nan dyalòg se tankou amizman.
Olye de sa, mwen te sove de fichye nan Dropbox, e kounye a mwen ka fè mond òdinatè mwen an retounen nan nòmal prèske imedyatman. E kisa m ap tann pandan tout ane sa yo... Apre sa, resèt la pou Windows и macOS.
Windows
V konsole Windows cmd.exe sa fèt an de etap:
ftype my_file_txt="C:Windowsnotepad.exe" "%1"
assoc .txt=my_file_txtChanjman yo pran efè imedyatman. Menm si asosyasyon an defini pou yon itilizatè espesifik, pou kèk rezon kòmand sa yo bezwen egzekite kòm administratè. Epi pa bliye double siy pousantaj la (%%1) lè w ap egzekite apati yon fichye batch. Yon mond majik. Windows 7 Ultim 64-bitâŚ
macOS
Nan MacOS li se pratik yo mete asosyasyon lè l sèvi avèk sèvis piblik la . Li enstale atravè brew install duti. Egzanp itilizasyon:
duti -s com.apple.TextEdit .txt "editor"Chanjman yo pran efè imedyatman, pa gen okenn sudo obligatwa. Isit la agiman "com.apple.TextEdit" se sa yo rele "id pake" nan pwogram nou bezwen an. Agiman "editè" a se kalite asosyasyon an: "editè" pou koreksyon, "viewer" pou gade, "tout" pou tout bagay.
Ou ka jwenn "ID pake a" tankou sa a: si gen "/Applications/Sublime Text.app" nan twazyèm vèsyon an, Lè sa a, ID pake li yo pral "com.sublimetext.3", oswa kèk lòt youn:
> osascript -e 'id of app "Sublime Text"'
com.sublimetext.3Teste sou macOS Range montay.
Senaryo final la pou 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 :eofSenaryo final la pou 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 ac3Sous: www.habr.com
