标题: [文件操作] 求助批处理实现文件夹批量重命名 [打印本页]
作者: 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运行,置于被更名文件夹所在同目录
- @echo off &setlocal enabledelayedexpansion
- (for /d %%d in ("XX·1111-11-1111-*") do (
- set "v=%%d"
- set "vp=!v:~,16!"&set "v=!v:~16!"
- 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)
- ))>1.tmp
- for /f "tokens=1-4 delims=/" %%1 in ('sort 1.tmp') do (
- set/a "n+=1"&set "vn=00!n!"&set "vn=!vn:~-3!"
- ren "%%4" "%%2!vn!%%3"
- )
- 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 |