中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-20 23:48
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]按文件夹名+指定字符串(有规律的)批量命名 查看 933 回复 9
楼 主 [已结]按文件夹名+指定字符串(有规律的)批量命名 发表于 2009-01-07 21:32 ·  中国 湖北 宜昌 联通
新手上路
积分 9
发帖 9
注册 2009-01-06 23:34
17年会员
UID 135995
性别 男
状态 离线
请教
文件名全部都是数字的,在007这个文件夹中有0001--0800(文件名都是用四位数值表示的),在每个文件夹中都有六个文件(文件名全部是数字),在一个文件中的文件名字是连续的。
文件的目录结构如下
0007

├─0001
│ 0017.pdf
│ 0018.pdf
│ 0019.pdf
│ 0020.pdf
│ 0021.pdf
│ 0022.pdf

├─0002
│ 0033.pdf
│ 0034.pdf
│ 0035.pdf
│ 0036.pdf
│ 0037.pdf
│ 0038.pdf

├─0003
│ 0045.pdf
│ 0046.pdf
│ 0047.pdf
│ 0048.pdf
│ 0049.pdf
│ 0050.pdf


现在希望得到的文件名是这样的

改名的规则是
按照每个文件中 文件名 数值的大小该为指定人字符串
根据大小分别用A B C D E F 六个字符串分别命名
最小的用A ,最大的用F 中间的按照大小分别是 B C D E

然后用把文件所在文件夹名加在文件前面
即每个文件名按照 文件夹名+指定字符串 的规律命名

期望结果示意图

0007

├─0001
│ 0001A.pdf
│ 0001B.pdf
│ 0001C.pdf
│ 0001D.pdf
│ 0001E.pdf
│ 0001F.pdf

├─0002
│ 0002A.pdf
│ 0002B.pdf
│ 0002C.pdf
│ 0002D.pdf
│ 0002E.pdf
│ 0002F.pdf

├─0003
│ 0003A.pdf
│ 0003B.pdf
│ 0003C.pdf
│ 0003D.pdf
│ 0003E.pdf
│ 0003F.pdf

[ Last edited by HAT on 2009-1-8 at 11:28 ]
2 发表于 2009-01-07 22:52 ·  中国 广西 百色 中移铁通
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
@echo off
set "str=ABCDEF"
for /d %%a in (*) do (
set n=0
for /f "delims=" %%b in ('dir /b/a-d "%%a\*.*"') do (
call call ren "%%a\%%b" "%%a%%%%str:~%%n%%,1%%%%%%~xb"
set /a n+=1
)
)
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
HAT +2 2009-01-08 11:28
yjch2005 +1 2009-01-08 12:46
3 发表于 2009-01-07 23:11 ·  中国 湖北 宜昌 联通
新手上路
积分 9
发帖 9
注册 2009-01-06 23:34
17年会员
UID 135995
性别 男
状态 离线
Originally posted by moniuming at 2009-1-7 22:52:
@echo off
set "str=ABCDEF"
for /d %%a in (*) do (
set n=0
for /f "delims=" %%b in ('dir /b/a-d "%%a\*.*"') do (
call call ren "%%a\%%b" &q ...



很谢谢你的解答

不好意思 我刚才的问题可能说的没是很 清楚

我的 A B C D E F 是一个不定长的字符串 只是为了方便表述 用了 A B C D E F 来代替的

刚才用了你地方法


执行速度还是蛮快地
4 发表于 2009-01-08 14:20 ·  中国 广西 百色 中移铁通
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
不好意思 我刚才的问题可能说的没是很 清楚

我的 A B C D E F 是一个不定长的字符串 只是为了方便表述 用了 A B C D E F 来代替的

那为什么还不把问题描述清楚呢?
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
yjch2005 +1 2009-01-08 16:12
5 发表于 2009-01-08 16:12 ·  中国 湖北 宜昌 联通
新手上路
积分 9
发帖 9
注册 2009-01-06 23:34
17年会员
UID 135995
性别 男
状态 离线
Originally posted by moniuming at 2009-1-8 14:20:

那为什么还不把问题描述清楚呢?


赫赫 不过用你的代码可以解决我的问题
6 发表于 2009-01-08 16:15 ·  中国 湖北 宜昌 联通
新手上路
积分 9
发帖 9
注册 2009-01-06 23:34
17年会员
UID 135995
性别 男
状态 离线
Originally posted by moniuming at 2009-1-8 14:20:

那为什么还不把问题描述清楚呢?


为了 提这个问题 我花了一个多小时 编辑帖子

有些东西 一不注意 就产生误解了


··············


··············


做什么都不容易啊
7 发表于 2009-01-09 23:52 ·  中国 湖北 宜昌 联通
新手上路
积分 9
发帖 9
注册 2009-01-06 23:34
17年会员
UID 135995
性别 男
状态 离线
二楼的代码中


call call ren "%%a\%%b" "%%a%%%%str:~%%n%%,1%%%%%%~xb"


这一句 看了几天帮助也不是很明白
有人愿意给我解释一下吗

[ Last edited by yjch2005 on 2009-1-9 at 23:53 ]
8 发表于 2009-01-10 13:10 ·  中国 广西 百色 中移铁通
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
Originally posted by yjch2005 at 2009-1-9 23:52:
二楼的代码中



这一句 看了几天帮助也不是很明白
有人愿意给我解释一下吗

[ Last edited by yjch2005 on 2009-1-9 at 23:53 ]

本论坛搜索"变量嵌套",以下是结果之一:
http://www.cn-dos.net/forum/viewthread.php?tid=41143&fpage=1&highlight=%E5%8F%98%E9%87%8F%E5%B5%8C%E5%A5%97
追加一个例子:
@echo off
set a=1
set b=%a%
set c=%b%
set d=%c%
call call call echo %%%%%%%%d%%%%%%%%
pause


[ Last edited by moniuming on 2009-1-10 at 13:16 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
yjch2005 +1 2009-01-11 16:00
9 发表于 2009-01-11 16:00 ·  中国 湖北 宜昌 联通
新手上路
积分 9
发帖 9
注册 2009-01-06 23:34
17年会员
UID 135995
性别 男
状态 离线
八楼的是个好同志 给你加分啊
10 发表于 2009-01-11 16:51 ·  中国 湖北 宜昌 联通
新手上路
积分 9
发帖 9
注册 2009-01-06 23:34
17年会员
UID 135995
性别 男
状态 离线
晕了好几天 终于把这句弄明白了
"%%a%%%%str:~%%n%%,1%%%%%%~xb"
论坛跳转: