批量改 dokuwiki 附件的图片文件名的脚本的需求

2020-02-11 14:29:30 +08:00
 crella
发个需求,有闲着想写脚本的老哥看看呗

情况是这样的,发现整理的 office 笔记里面的图片太多了,一开始截图保存的文件名我是随便定的,比如 wa1.jpg 、wh3.jpg 。后面发现连自己随便想的文件名都有重复的。于是决定全部改成

"日期名"+"当前时间转文本的 md5 前几位" + ".jpg"形式。

看看能不能用脚本形式来完成。现在要改名的图片还剩几十张,我觉得我写完脚本的时间比一个个在网页改的时间还长……

dokuwiki 的附件(图片)形式的代码,比如

{{:notes:office:xl:img:2020_02_11_04df39.jpg?200|}}

其中的前几个冒号的意思是指放在 dokuwiki 文件夹 /data/media/ notes/office/xl/img 文件夹里面,这个文件夹存在 2020_02_11_04df39.jpg 的意思,后面的"?200"是指图片放在网页里面的宽,可以不用改的。

dokuwiki 的数据系统是基于文件系统而不是基于数据库的,比如代码链接是 {{:notes:office:xl:img:2020_02_11_04df39.jpg?200|}},dokuwiki 的 php 程序就到 dokuwiki 文件夹 /data/media/ notes/office/xl/img 文件夹 去查找 2020_02_11_04df39.jpg ,找不到的话就打个红叉。所以在 dokuwiki 的代码里面改图片的文件名,还要接着在硬盘上改那个图片的文件名。

dokuwiki 每页的代码是放在 dokuwiki 文件夹 /pages/ 里面的,比如下面的示例代码放在了 dokuwiki 文件夹 /pages/ notes/office/xl/img 文件夹里面

<dokuwiki 代码 开始>
* 复制时保护行高列宽不变

^操作^图片说明^
|整行选取复制,粘贴后选取“保持列宽”|{{:notes:office:xl:img:2020_02_11_04df39.jpg?200|}} |

* 快速调整列宽

^操作^图片说明^
|选取多列,双击边线即可自动调整适合的列宽|{{:notes:office:xl:img:wh3.jpg?200|}} |
<dokuwiki 代码 结束>
1112 次点击
所在节点    问与答
5 条回复
summerwar
2020-02-11 20:33:19 +08:00
思路:从每页中提取图片,然后去相对应位置修改图片名称,接着讲修改后的图片名替换每页的内容,按照这个循环即可
crella
2020-02-11 22:50:19 +08:00
@summerwar 我也是这么想的。不过有个大问题。

dokuwiki 在找不到代码对应的图片的时候并不会真的在页面上显示一个红叉,而是没什么显示,只是浏览器 console 显示个 404。要是手抖,某些文件名改错了,到时候检查页面还得一个个翻 console,有这个时间我感觉还不如每个页面手动上传改过名的图片快一点,还好总共也就五十多张……
phy25
2020-02-12 03:16:24 +08:00
看起来这个插件改改就可以?

https://www.dokuwiki.org/plugin:mediarename
summerwar
2020-02-12 13:13:51 +08:00
@crella 跑代码,跑之前测试几个就是了,怕出错,再弄个记录文件记录下来前后对照的文件名,事后好查
phy25
2020-02-12 13:25:25 +08:00
抱歉之前没有注意到你还需要改页面,https://www.dokuwiki.org/plugin:move 再加批处理不知道行不行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/643726

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX