Imedyatman mete kanpe asosyasyon dosye abitye

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 sove de fichye sou Dropbox epi kounye a mwen ka pote mond òdinatè a tounen nan nòmal prèske imedyatman. Ak sa ou te ap tann pou anpil ane ... Next se resèt la pou Windows ak macOS.

Windows

Nan konsole Windows la cmd.exe sa fèt an de etap:

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

Chanjman yo pran efè imedyatman. Malgre lefèt ke asosyasyon an anrejistre pou yon itilizatè espesifik, pou kèk rezon kòmandman sa yo bezwen kouri kòm yon administratè. Epi pa bliye double senbòl pousan (%% 1) lè w ap kouri soti nan yon dosye baton. Mond majik Windows 7 Ultimate 64-bit...

MacOS

Nan MacOS li se pratik yo mete asosyasyon lè l sèvi avèk sèvis piblik la devwa. 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.3

Teste sou macOS Sierra.

Script final 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 :eof

Script final 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 """ || 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

Sous: www.habr.com

Add nouvo kòmantè