V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
JasonGrass
V2EX  ›  程序员

本地文件批量重命名,现在可以用 web 实现了

  •  2
     
  •   JasonGrass ·
    JasonGrass · 2023-12-18 22:46:37 +08:00 · 6136 次点击
    这是一个创建于 365 天前的主题,其中的信息可能已经有所发展或是发生改变。

    批量重命名是一个低频但时不时又会遇到的需求,非常适合在线工具的形式,然后还真发现了相关的 API 。

    FileSystemFileHandle.move() for local files - Chrome Platform Status

    chrome 于 111 版本添加的 move API ,可以直接对本地文件进行重命名,目前 MDN 上还没有文档,应该还不是标准。

    在线体验: Rename - 批量文件重命名工具

    Github: JasonGrass/rename: 在线文件批量重命名

    功能还不是很丰富,等之后有空了再完善吧。不过,正则表达式替换,已经可以覆盖很多高级场景了。

    感叹于浏览器的能力边界越来越大了,加上 webassembly ,估计以后很多功能都可以直接在浏览器上实现了,多方便。🤣

    50 条回复    2023-12-20 10:32:48 +08:00
    Anubisks
        1
    Anubisks  
       2023-12-18 23:35:27 +08:00
    其实 Windows 的 powertoy 是一个不错的选择
    tool2d
        2
    tool2d  
       2023-12-19 00:31:45 +08:00
    我也写了一个,但我是生成 bat 后,再本地运行的。

    原因是一些下载的 mp4 ,文件名实在太长了。
    dianso
        3
    dianso  
       2023-12-19 00:39:56 +08:00
    我都不用工具,直接问 gpt ,把要求描述下,基本一次性就能给我个 win11 用的 ps1 批处理。
    ab
        4
    ab  
       2023-12-19 00:52:38 +08:00   ❤️ 1
    如果是 mac 的话,automator 自带一个批量重命名的服务
    kkwa56188
        5
    kkwa56188  
       2023-12-19 03:16:06 +08:00
    PowerToys 里有个 PowerRename 挺好用的,
    要是我自己做轮子的话, 个人会使用 python,
    手里有一个锤子 看什么都像钉子
    fox0001
        6
    fox0001  
       2023-12-19 07:57:36 +08:00 via Android
    shell 脚本不会写吗?
    fox0001
        7
    fox0001  
       2023-12-19 08:00:22 +08:00 via Android
    我觉得,重点不是“能不能”,而是“该不该”。如果权限控制出 bug ,就等于你的电脑能被网站(利用浏览器)控制…
    jisuowei
        8
    jisuowei  
       2023-12-19 08:27:33 +08:00
    我也写过一个类似的,但不是用的这个 API ,我是读到浏览器里改完再下载回来 https://jisuowei.com/app/RenameMan
    JasonGrass
        9
    JasonGrass  
    OP
       2023-12-19 08:47:52 +08:00
    @fox0001 #7 浏览器不会允许网站直接读取你的文件的,每次使用都需要授权。这个跟你使用网页上传文件一样,需要你手动授权,在正常的浏览器上,没有哪个网页可以偷偷摸摸地读取你的文件。
    JasonGrass
        10
    JasonGrass  
    OP
       2023-12-19 08:51:35 +08:00
    @tool2d 这个思路棒诶,而且举一反三的话,确实很多事情,都可以用可视化界面做配置,然后生成脚本再执行
    JasonGrass
        11
    JasonGrass  
    OP
       2023-12-19 08:53:52 +08:00
    @fox0001 #6 照您这么说,很多工具都没有存在的必要。只能说,这些工具的受众不是您这种大神,是咱这种只想点点鼠标的普通人。
    webs
        12
    webs  
       2023-12-19 08:56:41 +08:00
    命令行有个 rename 命令可以直接用。。。
    JasonGrass
        13
    JasonGrass  
    OP
       2023-12-19 08:58:35 +08:00
    @dianso 当代最新高级玩法 😂
    JasonGrass
        14
    JasonGrass  
    OP
       2023-12-19 08:59:25 +08:00
    @Anubisks 你不说我都忘了电脑上装了这个软件,果然还是没用习惯 😥
    JasonGrass
        15
    JasonGrass  
    OP
       2023-12-19 09:00:02 +08:00
    @ab thanks, 新技能 GET
    davin
        16
    davin  
       2023-12-19 09:20:59 +08:00
    几乎不怎么用额外的软件/命令行,新手也比较适合的

    Windows 系统批量重命名:
    1. Ctrl+A 全选或鼠标选中需要批量重命名的文件;
    2. 在第一个文件旁点击鼠标右键,在菜单栏中选择 “重命名”;
    3. 输入命名方式,按下 Enter 键后,所有文件都会以这一方式自动重命名,并在后面加上序号。

    macOS 系统批量重命名:
    https://support.apple.com/zh-cn/guide/mac-help/mchlp1144/mac
    fox0001
        17
    fox0001  
       2023-12-19 09:21:02 +08:00 via Android
    @JasonGrass #9 所以我说是出 bug 的情况下。但是也不排除一些魔改版本,做恶意功能。
    wangtian2020
        18
    wangtian2020  
       2023-12-19 09:26:27 +08:00
    又从 nodejs 上偷功能了
    mainjzb
        19
    mainjzb  
       2023-12-19 09:28:09 +08:00
    这类需求适合 python+gpt
    JasonGrass
        20
    JasonGrass  
    OP
       2023-12-19 09:42:22 +08:00
    @fox0001 #17 那确实,所以还是大厂的浏览器比较靠谱
    JasonGrass
        21
    JasonGrass  
    OP
       2023-12-19 09:44:43 +08:00
    @wangtian2020 😂 竟然是从 nodejs 上来的功能,有点意思
    Byzliu
        22
    Byzliu  
       2023-12-19 12:43:40 +08:00 via Android
    可以试试 Advanced Renamer 这个挺好用的
    JasonGrass
        23
    JasonGrass  
    OP
       2023-12-19 12:50:05 +08:00
    @Byzliu thanks ,复杂的重命名需求,现在确实还是本地工具比较好用。一开始的想法,是弄个即用即走的工具,不用下载不用安装,就想到了网页版本的。
    ns09005264
        24
    ns09005264  
       2023-12-19 13:15:05 +08:00
    我用 vim 做文件[批量]重命名的,配合 lf 之类的终端文件管理器选择文件,然后在 vim 中进行操作就可以了,想用正则用正则,想用 V-Block 多行编辑就用。
    由于它是基于 mv 命令进行命名的,所以可以做到给不同文件夹里的文件们同时重命名,或者将一个文件夹里的文件分发到不同的文件夹。
    laqow
        25
    laqow  
       364 天前
    浏览器有这种功能可怕的一比啊,随便写点东西诱导一下或者把哪个广告窗口的关闭按钮放到 确定 气泡的位置就可以诱导操作本地文件,甚至 chrome 蹩脚中文本身的迷惑性带来的误操作
    ccxuy
        26
    ccxuy  
       364 天前
    这个看起来很不错啊,是不是能加一个记录重命名规则,多个规则顺序处理的功能?
    sub166
        27
    sub166  
       364 天前
    @laqow 网页权限请求的弹窗是用浏览器自带的,页面无法覆盖
    SilencerL
        28
    SilencerL  
       364 天前
    所以 https://vscode.dev/ 才能实现功能
    chnwillliu
        29
    chnwillliu  
       364 天前 via Android
    网页授权设备后串口烧固件写镜像到 U 盘这种都可以在 web 页面里完成,相当方便。

    Web Bluetooth ,Web Serial ,Web USB ,Web GPU 一大波系统级 API 慢慢开放给 Web 了。
    chnwillliu
        30
    chnwillliu  
       364 天前 via Android
    @laqow 浏览器在这方面确实要克制,但本质还是用户要自己甄别网页是否可信。好比安卓上你下小软件,不论三七二十一,联系人短信相册甚至屏幕权限都一通授权,钱没了才发现上当了,回头说手机中毒了。只能教育大众别瞎装小软件,你能说安卓开放这些 API 危险吗?
    JasonGrass
        31
    JasonGrass  
    OP
       364 天前
    @ccxuy 现在功能还比较初级,得等有空再弄了,我先记到 issue 中
    JasonGrass
        32
    JasonGrass  
    OP
       364 天前
    @chnwillliu #29 这些 API 都在路上了吗?浏览器要变成操作系统了…… 😂
    netme
        33
    netme  
       364 天前
    Bulk Rename Utility
    JasonGrass
        34
    JasonGrass  
    OP
       364 天前
    @netme 666 ,看官网截图,这个软件甚至还能自定义 js 代码实现重命名,感觉这个我可以学,哈哈哈
    [Bulk Rename Utility - Free File Renaming Software]( https://www.bulkrenameutility.co.uk/ )
    shinsekai
        35
    shinsekai  
       364 天前   ❤️ 1
    @ccxuy 菲菲更名宝贝,这个软件很老就有了。
    akira
        36
    akira  
       364 天前
    那以后电脑里面 内置 语音接收,然后 AI 识别,然后自动执行,这样应该更合理吧
    JasonGrass
        37
    JasonGrass  
    OP
       364 天前
    @ccxuy 哦,确实,如果你现在就有一些比较复杂的需求,可以考虑本地批量重命名工具,这里有一些网页的推荐收集:
    https://github.com/JasonGrass/rename/discussions/3
    JasonGrass
        38
    JasonGrass  
    OP
       364 天前
    @akira 突然想到了老罗的 TNT ,老罗还是太超前了
    james122333
        39
    james122333  
       364 天前 via Android
    @laqow

    的确十分恐怖 洞越来越大
    james122333
        40
    james122333  
       364 天前 via Android
    @chnwillliu

    这不可能的 一个网页资源很多 你不可能全都知道的
    chromium 系市场占有率又极高 这么複杂的工具有什么洞也不意外
    sjtulyj
        41
    sjtulyj  
       364 天前
    vidir
    SHF
        42
    SHF  
       364 天前
    xyplorer 文件管理器自带的功能,而且有两种模式,很方便



    DOLLOR
        43
    DOLLOR  
       364 天前
    关键是 showDirectoryPicker 这个接口吧,选定某个目录后,就可以读写里面的文件。很多以前需要 python 、node 才能干的活,现在只需 chrome (及其套壳浏览器)就能干了。
    不过目前 firefox 、safari 还未实现。
    geomancy
        44
    geomancy  
       364 天前 via iPhone
    我一直用 acdsee2.4 单文件版 做各种批处理更名 批处理图像转换 非常好用 还支持模式匹配
    yuzo555
        45
    yuzo555  
       364 天前
    MDN 上的兼容性表格说 Chrome 还不支持 FileSystemFileHandle.move (但 Firefox 支持了),应该是没更新
    FaiChou
        46
    FaiChou  
       364 天前 via iPhone
    记得 emacs 有个模式,可以把所有文件列表当作文本处理,保存即可重命名或标记 delete 之类的。
    paopjian
        47
    paopjian  
       364 天前
    浏览器大一统操作系统指日可待
    param
        48
    param  
       364 天前 via Android
    这个接口得有访问范围吧,要求用户先将某个目录加入访问范围,再允许某个域去修改,不然那么危险。
    laqow
        49
    laqow  
       364 天前
    @chnwillliu 危险的一比好吗,安卓就谷歌一脉相承的,本来设计上就是服务服务商的,用户屁权利没有,一通授权哪里是用户能选择的,本身作为 linux 系统权限控制都是现成的逻辑,偏要自己搞一个看起来严密其实全是漏洞的逻辑
    JasonGrass
        50
    JasonGrass  
    OP
       364 天前
    @param 这个授权是一次性的,每次使用浏览器都会询问是否允许访问 XXX 文件夹。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5460 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 08:52 · PVG 16:52 · LAX 00:52 · JFK 03:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.