V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
crella
V2EX  ›  问与答

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

  •  
  •   crella · 2020-02-11 14:29:30 +08:00 · 1112 次点击
    这是一个创建于 1728 天前的主题,其中的信息可能已经有所发展或是发生改变。
    发个需求,有闲着想写脚本的老哥看看呗

    情况是这样的,发现整理的 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 代码 结束>
    5 条回复    2020-02-12 13:25:25 +08:00
    summerwar
        1
    summerwar  
       2020-02-11 20:33:19 +08:00
    思路:从每页中提取图片,然后去相对应位置修改图片名称,接着讲修改后的图片名替换每页的内容,按照这个循环即可
    crella
        2
    crella  
    OP
       2020-02-11 22:50:19 +08:00 via Android
    @summerwar 我也是这么想的。不过有个大问题。

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

    https://www.dokuwiki.org/plugin:mediarename
    summerwar
        4
    summerwar  
       2020-02-12 13:13:51 +08:00
    @crella 跑代码,跑之前测试几个就是了,怕出错,再弄个记录文件记录下来前后对照的文件名,事后好查
    phy25
        5
    phy25  
       2020-02-12 13:25:25 +08:00 via Android
    抱歉之前没有注意到你还需要改页面,https://www.dokuwiki.org/plugin:move 再加批处理不知道行不行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   942 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:02 · PVG 05:02 · LAX 13:02 · JFK 16:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.