【已解决】attachment management排除某一文件夹的附件,进行重命名

遇到的问题

设置了完整的文件夹路径,但在运行attachment management后,还是会将排除路径下的附件进行重命名

image

解决方案

将不希望重命名的附件移动到库以外的文件夹,再对库中的附件进行重命名后,再移回。

关于attachment management的使用问题,详见评论。

不太熟悉这个插件

但一般设置里要求填路径时, 都是指 “对该仓库 (Vault) 根目录的相对路径” Attachment Management > What if I add ‘/’ to Exclude Paths 一般都不是从 Win 系统的盘符那里填写的

主要是我都用过了。

运行了以后,还是会重命名一遍所有附件

image

E:\坚果云\Obsidian\Ob_工作\未命名
Obsidian\Ob_工作\未命名
Obsidian\Ob_工作\未命名\
Ob_工作\未命名
Ob_工作\未命名\
未命名
未命名\

反斜杠改成斜杠呢?

逻辑在这,根据代码可知,如果勾选了excludeSubpaths选项,只要文件所在文件夹路径以你填写的路径开头就会排除,如果没勾选excludeSubpaths选项,只有文件所在文件夹路径和你填写的路径完全相同才能排除。

这个函数的path参数是文件所在文件夹的路径。你可以检查下你的配置和文件的路径是否符合上面的逻辑。包括路径的分隔符\和/是否一致,可以多试试,涉及到路径,没有Windows环境,不清楚window下的路径在obsidian是否也是/分割。

可以打开devtools(ctrl+shif+i),切换到console标签执行下,app.workspace.getActiveFile()就知道路径的分割符了,也可以以此判断你的文件路径是否符合排除条件。

如下

2 个赞

感谢找到这逻辑~

刚在 Windows 实际试了

donot_rename_attachs/subfolder  <= 插件没去碰里面的图片, 该行为正常
donot_rename_attachs\subfolder  <= 没被插件识别到这该忽略, 不合用户预期

顺便编辑一下

这说明obsidian的路径在window中也是使用/ 做分割符的

在 Windows 里试了, 楼上代码 app.workspace.getActiveFile() 确实还是 / 做为路径分隔符

2 个赞

感谢提供测试数据!

这说明obsidian的路径在window中也是使用/做分割符的。

1 个赞

是我哪里操作不对吗?还是更名了所有附件

image

image

Attachment/t 这个路径, 是用于 “存放笔记” 还是 “存放附件” 的?

用于存放附件,我新建用来测试的

我理解这插件的意思是, 如果笔记路径匹配到 Excluded paths, 则不会去检查这笔记里, 是否有附件要更名

而附件改名后存哪, 是另外一回事

见主页说明

By default, the “Exclude paths” will only work on the folder you added and that folder contain at least one markdown file, you can toggle “Exclude subpaths” to exclude subpaths also.

注意这里特意提到 “Exclude paths” 该文件夹至少得包含一个 markdown 文件, 所以这是跟 “笔记路径” 有关

楼上说的有道理,这个排除路径,应该是指的是排除笔记文件夹路径吧,意思是这个路径下的笔记的附件不会被重命名,而不是指某附件的路径不被重命名。

通过以下代码可以证明,排除的路径是指文档路径而不是附件路径

这里的allFiles是从app.vault.getFiles()获取的,显然这里获取的是全部文档路径。且我看了它其他的命令也同样是这个逻辑。

原来如此。

因为这个插件,会重命名所有附件,我本来还想着,可以将已经按要求重命名的文件都移到一个排除的文件夹,避免重复更名。

看来目前,我只能先把已经改名的文件,先移动到其他文件夹。待未改名的附件改名后,再将已经改名的文件复制回去。