[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 求助批处理实现文件夹批量重命名

本帖最后由 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想啊啊试试

回复 1# liaoguinan


文件夹数量超过10个的时候,命名规则是否考虑改成这样:
XX·1111-11-1111-01阿达是的
XX·1111-11-1111-02啊实打实大师
...
XX·1111-11-1111-10哈哈哈
XX·1111-11-1111-11嘿嘿嘿
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


    是的

TOP

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

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

TOP

回复 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想啊啊试试


前面是号码段,后面中文字不固定。只改后面的数字改成序号

TOP


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

TOP

本帖最后由 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
复制代码

TOP

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

TOP

返回列表