Board logo

标题: [文件操作] 求助批处理实现文件夹批量重命名 [打印本页]

作者: liaoguinan    时间: 2024-5-13 20:26     标题: 求助批处理实现文件夹批量重命名

本帖最后由 liaoguinan 于 2024-5-14 08:33 编辑

XX·1111-11-1111-1小明啊撒大声地
XX·1111-11-1111-3啊实打实大师
XX·1111-11-1111-4是撒大声地
XX·1111-11-1111-11啊撒大声地
XX·1111-11-1111-18我实打实
XX·1111-11-1111-111啊实打实的
XX·1111-11-1111-118哦哦青蔷薇
XX·1111-11-1111-128这咋啊啊
XX·1111-11-1111-189流量计刚刚
XX·1111-11-1111-228想啊啊试试

如何批量把上面文件夹后面改为序号如下
XX·1111-11-1111-1小明啊撒大声地
XX·1111-11-1111-2啊实打实大师
XX·1111-11-1111-3是撒大声地
XX·1111-11-1111-4啊撒大声地
XX·1111-11-1111-5我实打实
XX·1111-11-1111-6啊实打实的
XX·1111-11-1111-7哦哦青蔷薇
XX·1111-11-1111-8这咋啊啊
XX·1111-11-1111-9流量计刚刚
XX·1111-11-1111-10想啊啊试试
作者: Batcher    时间: 2024-5-13 20:41

回复 1# liaoguinan


文件夹数量超过10个的时候,命名规则是否考虑改成这样:
XX·1111-11-1111-01阿达是的
XX·1111-11-1111-02啊实打实大师
...
XX·1111-11-1111-10哈哈哈
XX·1111-11-1111-11嘿嘿嘿
作者: liaoguinan    时间: 2024-5-13 20:54

回复 2# Batcher


    是的
作者: 77七    时间: 2024-5-14 00:32

请提供真实文件名,并适当描述。

如果要杜撰假名
比如把 张三 替换为 小明、苹果、手机 都可以,2024 替换为 3135,5313 也可以。但是替换为 XX和1111,就让人看不懂了。
并且不能有歧义,
例子中每个数字序号后都跟 "阿" 或者 "啊",是不是可以把 啊 和 阿 当作分隔符呢?
作者: liaoguinan    时间: 2024-5-14 08:34

回复 4# 77七


    XX·1111-11-1111-1小明啊撒大声地
XX·1111-11-1111-3啊实打实大师
XX·1111-11-1111-4是撒大声地
XX·1111-11-1111-11啊撒大声地
XX·1111-11-1111-18我实打实
XX·1111-11-1111-111啊实打实的
XX·1111-11-1111-118哦哦青蔷薇
XX·1111-11-1111-128这咋啊啊
XX·1111-11-1111-189流量计刚刚
XX·1111-11-1111-228想啊啊试试

如何批量把上面文件夹后面改为序号如下
XX·1111-11-1111-1小明啊撒大声地
XX·1111-11-1111-2啊实打实大师
XX·1111-11-1111-3是撒大声地
XX·1111-11-1111-4啊撒大声地
XX·1111-11-1111-5我实打实
XX·1111-11-1111-6啊实打实的
XX·1111-11-1111-7哦哦青蔷薇
XX·1111-11-1111-8这咋啊啊
XX·1111-11-1111-9流量计刚刚
XX·1111-11-1111-10想啊啊试试


前面是号码段,后面中文字不固定。只改后面的数字改成序号
作者: aloha20200628    时间: 2024-5-14 08:49


只要被更名序号的前置字符量相等,再预估一个被更名序号的最大长度,解法就明确了...

作者: aloha20200628    时间: 2024-5-14 10:03

本帖最后由 aloha20200628 于 2024-5-14 10:58 编辑


针对楼主示例,前置字符量=16,且内容相同,被更名序号最大长度=3 算法关键是据此构建一个可基于被更名序号排序的链表文件...
如前置字符串内容不同,第2行中的匹配表达式改为一连串?*(亦可用for /l 累加合成)
如要简化第5行代码,可用call子过程代劳...
以下代码存为test.bat运行,置于被更名文件夹所在同目录
  1. @echo off &setlocal enabledelayedexpansion
  2. (for /d %%d in ("XX·1111-11-1111-*") do (
  3. set "v=%%d"
  4. set "vp=!v:~,16!"&set "v=!v:~16!"
  5. if "!v:~1,1!" gtr "9" (echo,00!v:~,1!/!vp!/!v:~1!/%%d) else if "!v:~2,1!" gtr "9" (echo,0!v:~,2!/!vp!/!v:~2!/%%d) else (echo,!v:~,3!/!vp!/!v:~3!/%%d)
  6. ))>1.tmp
  7. for /f "tokens=1-4 delims=/" %%1 in ('sort 1.tmp') do (
  8. set/a "n+=1"&set "vn=00!n!"&set "vn=!vn:~-3!"
  9. ren "%%4" "%%2!vn!%%3"
  10. )
  11. del/q 1.tmp&endlocal&pause&exit/b
复制代码

作者: Kacastic    时间: 2024-5-14 14:53

思路:借助excel表格为每一个文件夹重命名操作生成一条指令。
步骤:①先把前缀分离(前缀不同可通过分隔号分开原始名称后复制所需区域),②使用通配符检索替换所有的数字,获得文字部分,③使用自动填充生成数列。使用公式组合①③②得到目标文件名序列。全选初始文件,ctrl+shifit+c复制包含文件名的文件地址,检索替换掉前面的路径。使用公式组合指令字符串。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2