文件批量重命名之在线版本-前端的本地文件操作
批量文件重命名是一个低频但时不时又会遇到的需求,非常适合在线工具的形式,即用即走。
搜索了一圈,没有发现可以直接实现这个功能的网站,不过找到了相关的 API
FileSystemFileHandle.move() for local files - Chrome Platform Status
Chrome 于 111 版本(2023年3月)添加了 move
这个API ,可以直接对本地文件进行重命名,目前还不是正式的标准规范,WHATWG 和 MDN 上都暂时还没有文档。
在线体验:https://rename.jgrass.xyz/
Github: JasonGrass/rename: 在线文件批量重命名
感叹于浏览器的能力边界越来越大了,加上 webassembly ,估计以后很多功能都可以直接在浏览器上实现了。
关于更多本地文件操作的支持,可以看这里:File System Access API:简化对本地文件的访问 | Capabilities | Chrome for Developers
🍕 主要的问题
FileSystemFileHandle.move
方法对文件进行重命名时,会更改文件的“修改时间”,而手动重命名或使用本地重命名工具,不会有这个问题。在部分场景下还是会造成困扰。
不知道这个算不算 BUG,在 Add FileSystemHandle.move method by a-sully · Pull Request #10 · whatwg/fs 这里提交了反馈。
在这里(Intent to Ship: FileSystemFileHandle.move() for local files)也提交了反馈。
希望能今早修复吧,或者直接将这个行为写到规范中。
🍕 工具的扩展
除了文件的重命名,移动等,还有包括文件夹的重命名和移动,所以就上述工具来说,可以丰富成一个文件与文件夹整理的工具。甚至因为可以直接读取本地文件的内容,还可以加入预览功能。
当然,https://vscode.dev/ 应该也是借助相关能力,直接浏览器读取本地代码文件进行编辑的。
🍕 对比本地原生工具
首先,为了安全考虑,浏览器当然只会允许 web 读取用户允许的文件夹内的文件,并且 web 是无法知道文件的绝对路径的。
另外,相比原生工具,浏览器提供的文件属性信息很少,只有大小,修改时间,文件类型等几项,所以有些本地本地工具可以读取并修改 mp3 文件的音乐标签,这个现在 web 端提供的 API 还做不到。
不过,大部分场景都够用了。
这里有一些本地原生工具的推荐:https://github.com/JasonGrass/rename/discussions/3 ,或者直接看小众软件的整理: https://www.appinn.com/tag/重命名/