即时自定义熟悉的文件关联

自动执行文件关联任务,即选择将要从Explorer / Finder打开文件的程序。 和分享。


首先是问题。 默认情况下,所需扩展名的文件通常不打开任何内容,如果打开,则使用某些iTunes打开。 在Windows下,安装(甚至卸载)程序时,必要的关联发生了,完全丢失了:以前是GIMP,您将其拆除,并且ico文件从通常的文件查看器传输到标准的Photo Gallery。 怎么了 怎么了 它是未知的...并且,如果您发现新的编辑器或由于各种原因而重新安装了? 如果不孤单的计算机? 通常,在对话框中用鼠标单击是一种娱乐。


相反,我在Dropbox上保存了两个文件,现在我可以立即将计算机世界带入熟悉的状态。 以及等待了这么多年的东西...接下来是Windows和macOS的配方。


窗户


在Windows控制台cmd.exe这分两个阶段完成:


 ftype my_file_txt="C:\Windows\notepad.exe" "%1" assoc .txt=my_file_txt 

更改将立即生效。 尽管已经为当前用户注册了关联,但是出于某种原因,您仍需要以管理员权限运行这些命令。 并且从蝙蝠文件开始时,不要忘记将百分比符号(%% 1)加倍。 Windows 7 Ultimate 64位的神奇世界...


UPD 实验表明,使用ftype / assoc进行的操作会影响计算机上的所有用户(我们的编辑部没想到会有这种转变)。 但是,该计划仍然有效。 但是我将找出如何不影响其余部分。


操作系统


在makoshi中,可以使用duti实用程序方便地设置关联。 它是通过brew install duti 。 用法示例:


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

更改将立即生效;不需要sudo。 这里的参数“ com.apple.TextEdit”是我们需要的程序的所谓“捆绑ID”。 参数“编辑器”是关联的类型:“编辑器”用于编辑,“查看器”用于查看,“所有”用于所有内容。


您可以找到这样的“ 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)\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 :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 \"${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 ac3 

Source: https://habr.com/ru/post/zh-CN449820/


All Articles