Ρυθμίστε άμεσα γνωστούς συσχετισμούς αρχείων

Αυτοματοποιημένη ρύθμιση συσχετίσεων αρχείων, δηλαδή επιλογή προγράμματος που θα ανοίξει ένα αρχείο από το 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) όταν εκτελείτε από ένα αρχείο bat. Ο μαγικός κόσμος των Windows 7 Ultimate 64-bit…

macOS

Στο MacOS είναι βολικό να ορίσετε συσχετίσεις χρησιμοποιώντας το βοηθητικό πρόγραμμα duti. Εγκαθίσταται μέσω brew install duti. Παράδειγμα χρήσης:

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

Οι αλλαγές τίθενται σε ισχύ αμέσως, δεν απαιτείται sudo. Εδώ το όρισμα "com.apple.TextEdit" είναι το λεγόμενο "bundle id" του προγράμματος που χρειαζόμαστε. Το όρισμα "editor" είναι ο τύπος συσχέτισης: "editor" για επεξεργασία, "viewer" για προβολή, "all" για όλα.

Μπορείτε να βρείτε το "Bundle id" ως εξής: εάν υπάρχει το "/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

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο