Board logo

标题: [已结]按文件夹名+指定字符串(有规律的)批量命名 [打印本页]

作者: yjch2005     时间: 2009-1-7 21:32    标题: [已结]按文件夹名+指定字符串(有规律的)批量命名

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

作者: moniuming     时间: 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" "%%a%%%%str:~%%n%%,1%%%%%%~xb"
    set /a n+=1
  )
)

作者: yjch2005     时间: 2009-1-7 23:11
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 来代替的 刚才用了你地方法 执行速度还是蛮快地

作者: moniuming     时间: 2009-1-8 14:20
不好意思 我刚才的问题可能说的没是很 清楚 我的 A B C D E F 是一个不定长的字符串 只是为了方便表述 用了 A B C D E F 来代替的
那为什么还不把问题描述清楚呢?

作者: yjch2005     时间: 2009-1-8 16:12
Originally posted by moniuming at 2009-1-8 14:20: 那为什么还不把问题描述清楚呢?
赫赫 不过用你的代码可以解决我的问题

作者: yjch2005     时间: 2009-1-8 16:15
Originally posted by moniuming at 2009-1-8 14:20: 那为什么还不把问题描述清楚呢?
为了 提这个问题 我花了一个多小时 编辑帖子 有些东西 一不注意 就产生误解了 哎 ·············· ·············· 做什么都不容易啊

作者: yjch2005     时间: 2009-1-9 23:52
二楼的代码中
call call ren "%%a\%%b" "%%a%%%%str:~%%n%%,1%%%%%%~xb"
这一句 看了几天帮助也不是很明白 有人愿意给我解释一下吗 [ Last edited by yjch2005 on 2009-1-9 at 23:53 ]

作者: moniuming     时间: 2009-1-10 13:10
Originally posted by yjch2005 at 2009-1-9 23:52: 二楼的代码中 这一句 看了几天帮助也不是很明白 有人愿意给我解释一下吗 [ Last edited by yjch2005 on 2009-1-9 at 23:53 ]
本论坛搜索"变量嵌套",以下是结果之一: www.cn-dos.net/forum ... 追加一个例子:
@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 ]

作者: yjch2005     时间: 2009-1-11 16:00
八楼的是个好同志 给你加分啊

作者: yjch2005     时间: 2009-1-11 16:51
晕了好几天 终于把这句弄明白了 "%%a%%%%str:~%%n%%,1%%%%%%~xb"