中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]按文件夹名+指定字符串(有规律的)批量命名
作者:
标题: [已结]按文件夹名+指定字符串(有规律的)批量命名 上一主题 | 下一主题
yjch2005
新手上路





积分 9
发帖 9
注册 2009-1-6
状态 离线
『楼 主』:  [已结]按文件夹名+指定字符串(有规律的)批量命名

请教
          文件名全部都是数字的,在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 ]

2009-1-7 21:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 2 楼』:  


@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
  )
)


   此帖被 +3 点积分    点击查看详情   
评分人:【 HAT 分数: +2  时间:2009-1-8 11:28
评分人:【 yjch2005 分数: +1  时间:2009-1-8 12:46


2009-1-7 22:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yjch2005
新手上路





积分 9
发帖 9
注册 2009-1-6
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by moniuming at 2009-1-7 22:52:
[code]@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  来代替的

刚才用了你地方法


执行速度还是蛮快地

2009-1-7 23:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 4 楼』:  



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

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

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

   此帖被 +1 点积分    点击查看详情   
评分人:【 yjch2005 分数: +1  时间:2009-1-8 16:12


2009-1-8 14:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yjch2005
新手上路





积分 9
发帖 9
注册 2009-1-6
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by moniuming at 2009-1-8 14:20:

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

赫赫 不过用你的代码可以解决我的问题

2009-1-8 16:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yjch2005
新手上路





积分 9
发帖 9
注册 2009-1-6
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by moniuming at 2009-1-8 14:20:

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

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

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


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


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


做什么都不容易啊

2009-1-8 16:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yjch2005
新手上路





积分 9
发帖 9
注册 2009-1-6
状态 离线
『第 7 楼』:  

二楼的代码中

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

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

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

2009-1-9 23:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 8 楼』:  



  Quote:
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/view ... F%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-1-11 16:00


2009-1-10 13:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yjch2005
新手上路





积分 9
发帖 9
注册 2009-1-6
状态 离线
『第 9 楼』:  

八楼的是个好同志 给你加分啊

2009-1-11 16:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yjch2005
新手上路





积分 9
发帖 9
注册 2009-1-6
状态 离线
『第 10 楼』:  

晕了好几天 终于把这句弄明白了
"%%a%%%%str:~%%n%%,1%%%%%%~xb"

2009-1-11 16:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: