[windows端的hook] 找不到类似mac端的给文件创建一个唯一URL的软件

[windows端的hook] 找不到类似mac端的给文件创建一个唯一URL的软件

  • mac端可以通过 hook , devonthink等软件 给每个文件,文件夹 提供一个唯一的URL id, 通过 URL Schemer link ,唤起这个软件从而快速找到该文件
  • 这个URL Schemer 在windows也是支持的, 但是就是找不到这样的软件提供这个功能…
    (另外 极端情况下 要考虑 多个windows电脑通过 云盘同步文件后, 不同的绝对路径 (毕竟网盘的安装位置很难保证一致), 也能使用同一个 URL link唤起)

场景

用于插入这个文件的url 到 笔记软件, 代办软件, 项目管理软件里, 这样以后翻阅时直接一键就能跳转到文件所在位置

有推荐的吗?

我都是放dropbox里,然后用dropbox的链接

1 Like

可以使用 Zotero ,但没有mac上 hook、devonthink 好用

1 Like

Everything 提供了一个支持URL协议,需要设置里勾选开启。

URL格式是es:文件名

1 Like

file://C:/Windows/Media/ding.wav

1 Like

笔记软件挨个试

  • obsidian , 思源笔记, logseq, notion, flowus,语雀, 飞书文档
  • 知识管理型笔记软件 heptabase , roam research , tana, thebrian
  • 写作输出型 lattics, ginko, scrivner
  • 其他类印象笔记软件 mindbox

windows 还是找不到一个这样的app。。。
哎, 希望有大佬开发一下, 为了越来越难整理的文件系统

zotero的问题在于 他的同步限制

  • 要么官方数据同步价格太贵
  • 第三方又太折腾了
    而且文件需要导入zotero内部, 而mac的hook devonthink 都是可以索引外部文件夹的吧(hook我一直没用过, 看各种mac效率用户在用)

问题在于改名或者移动位置, 换个电脑
或者 百度网盘的同步盘改了路径, 这个就不可用了

明确的说没有,记得之前用hook的时候,好像看到官方说这用到了苹果的独有特性,甚至是与苹果上广泛存在的自动化相挂钩。

一些不支持果子自带自动化的软件,比如 magin note ,其实也搞不到它的双链——尽管这些软件管理的文件也有其双链。

放到 win 上,首先是那个苹果的一些特性,按你说的 URL Schemer Link 在 win 上也有,那么是有可能的(我映象里是没听说过)。

但自动化又会卡死:win 上很多软件开发不规范,你用过 Power Automate 就知道了,很多软件都拿不到软件 UI 部件的那个码的,你去选只有一个大框,这就没法脚本化,Power Automate 的解决方案是 OCR 并点击……

这种粗糙的解决方案只是自动化工具用用还行,像双链这种后台应用肯定是不行的,更别说 Win 随着缩放、分辨率,OCR 也没那么靠谱。

果子还能用开发工具救救场,win 就真的只能摆了。

所以就算能搞,最多也就文件管理器中引一条链接,指向这个文件,不可能像 Hook 配合 Skim 那样,还能给你精确到某个 PDF 的某页的。——前提是 win 上也有这种文件更改、移动、重命名、上传云端再下载后还能定义到这个文件的独有 API 才行。

2 Likes

给你把标题修了,tag位置不对

我自己用quicker造了一个很简单的轮子,但是功能很简单,只能自己用的样子,分享出来其他人根本不会用的那种,大概步骤是这样:

  • 通过注册表在系统里注册一个我自己的uri协议,我用的ilcpm
    参考 How do I register a custom URL protocol in Windows? - Stack Overflow
    Registering an Application to a URI Scheme (Windows) | Microsoft Learn
  • 通过上面的注册表,把ilcpm:XXXX开头的协议传递给quicker的一个动作,XXXX作为参数,参数语法是模仿的URL链接里的查询字符串,也就是video?file=xxx&time=xxxx这样
  • 在quicker的动作里处理XXX这个参数,实现打开uri的功能,具体功能如下:
    • 如果前面的路径是video,那么调用potplayer打开这个file并跳转到指定time,实现在笔记软件里打开本地的学习视频跳转到指定时间点的功能(这个功能后来被一个叫jumpvideo的软件实现了,原理是一样的,但是还增加了对网页视频的支持,因为后面需求不大了,所以我没去研究过这个软件)
    • 如果前面的路径是file,视为普通的文件,直接打开file参数对应的路径,类似的反正就是多几个if的问题,想怎么加功能都可以
  • 制作另外的配套动作,实现生成uri的功能
    • 对于普通的文件,运行A动作后直接获取选中的文件路径,按上述约定的格式生成uri并复制
    • 对于potplayer中正在播放的视频,运行B动作后通过potplayer的快捷键复制到视频的路径和时间码,处理一下生成对应的uri

对于你说的多台电脑的问题,我也考虑到了,可以通过环境变量来控制,比如我给学习视频的文件夹建了一个%学习%的环境变量,生成URI的时候匹配一下路径,把文件路径写成%学习%/微分方程/01-XXX.mp4这样的方式
或者也可以在quicker的动作里定义一个列表来管理

我也想过分享出来,但是自己水平有限,用的也少,没有办法开发的很完善,上面环境变量的处理那个部分写的很烂,对学习视频的处理是直接写死的,根本没做匹配啥的:joy:

其实有能力的话完全可以自己开发一个程序,允许用户通过powershell命令来处理uri里面的参数逻辑就好了,然后用户想调用什么程序都可以


没有录制gif的软件,我截图展示一下吧


这是选中文件之后运行A动作得到的文件的uri,生成的是Markdown超链接格式,ilcpm后面的file表示这是个文件,按文件处理,?后的file参数是文件路径,经过了urlencode编码
[C:\Users\Ruossipha\Desktop\微分方程数值解.pptx](ilcpm:file?file=C%3A%5CUsers%5CRuossipha%5CDesktop%5C%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8B%E6%95%B0%E5%80%BC%E8%A7%A3.pptx)

这是在potplayer里运行B动作的结果,ilcpm后面的video表示这是个视频,走视频处理的逻辑,调用potplayer打开file参数的视频跳转到time参数对应的时间,后面的路径为了可读性在这里我手动转换了一下,至于为什么罗马假日在%学习%\复变函数\这个奇怪的路径对吧,这是动作里写死的,每次要我手动配置……
[Roman.Holiday.1953.UHD.Blu-ray.2160p.10bit.HDR.2Audio.TrueHD.2.0.x265-beAst.mkv 00:35:16](ilcpm:video?file=%学习%\复变函数\Roman.Holiday.1953.UHD.Blu-ray.2160p.10bit.HDR.2Audio.TrueHD.2.0.x265-beAst.mkv&time=00:35:16)


这是点击uri之后处理uri的动作,先判断协议名称(与上面原理介绍的部分有些出入)是不是ilcpm,就是说只处理我自己定义的uri,然后就是正常的判断,视频就进入视频处理的逻辑,文件就进入文件处理的逻辑

1 Like

其实类似的还可以给pdf增加这样的逻辑,比如pdf?file=xxx&page=xxx
然后看PDF的软件打开对应页面的参数是什么样的,自己配置一下就可以了

缺点也很明显,因为所有的文件都是通过路径写死的,一旦生成uri,那这个文件就不能移动位置和重命名什么的了,否则就失效……

没有办法用一个惟一的id对应这个文件并进行跟踪

原理和你一样,不过我用不同的软件写过。
ahk:必须安装软件,后期ahk的代码维护太蛋痛。
vbs:无需安装软件,定义协议即可。
vbs+python:必须安装python,好处是我后期维护方便,可以用python写代码来实现不同的功能。

1 Like

windows和类unix系统不一样,不存在一个根目录,所以跨磁盘移动文件原来的uri一定会失效
建议的方法:所有被使用到的资源在同一磁盘固定目录下建立硬链接,为这个硬链接创建uri并使用。如果是跨区移动或引用,在各个分区下设置相应的目录并同步

其实跨盘移动都不是问题,手动改一下路径里的盘符就好了
真正的问题是后面整个路径都不能再变化,比如工作/XX项目/XX文件夹/xx文件
所有的这一串文件夹包括文件本身,不能再有一个路径变化,这才是最难的
可能写完了就变成了XX-日期

感觉这个方式可以结合下 everything 的 es urls 的功能
中间用 es 去检索对应的文件名,默认选取第一个结果作为路径,然后再进行下一步,这样应该无所谓目录了

我现在考虑 用 时间戳 + quicker + everything搜索, 实现快速查找

  • 就是文件命名必须有时间戳了