Board logo

标题: 一个比较复杂的图片批量重命名问题 [打印本页]

作者: lac     时间: 2009-8-6 23:29    标题: 一个比较复杂的图片批量重命名问题

现在碰到这样一个问题,我现在有200个文件夹,每个文件夹内有名字依次为1,2,3。。。19的19张图片,一些图片有缺失的情况,所以编号也可能是不连续的。
需要把这些图片改名为A_X_B_Y的格式,其中,A为固定的前缀,X须与图片所在的文件夹名相同,B也为固定的,Y与图片的编号相关联,如1对应Y1,2对应Y2等,但Y1,Y2。。。Y19不连续。(先前为了咨询用Y1...这些代称来提问,犯了未能一次表述清楚问题的错误,现在重新编辑一下,请见谅!)
重命名对应关系如下:
图片现名      重命名目标名称
1                 A_X_B_SE-C-010
2                 A_X_B_SE-F-1-010
3                 A_X_B_SE-F-1-040
4                 A_X_B_SE-F2-010
5                 A_X_B_SE-F2-020
6                 A_X_B_SE-F2-030
7                 A_X_B_SE-F2-040
8                 A_X_B_SE-F2-050
9                 A_X_B_SE-F3-010
10               A_X_B_SE-F3-030
11               A_X_B_SE-F3-040
12               A_X_B_SE-F3-060
13               A_X_B_SE-F3-080
14               A_X_B_SE-F-4-060
15               A_X_B_SE-F-4-070
16               A_X_B_SE-F-4-080
17               A_X_B_SE-F-4-160
18               A_X_B_SE-A-1-010
19               A_X_B_SE-A-1-020
我属于门儿都还没入的新手,帖子也搜索过,无奈没有这种把固定前缀,与文件夹同名,指定列表重命名综合起来的案例,只有发帖寻求帮助了。。。

[ Last edited by lac on 2009-8-7 at 03:16 ]
作者: moniuming     时间: 2009-8-7 00:57
试试?如果显示符合要求,把ren前的"echo."去掉即可进行重命名操作...
@echo off
for /f "delims=" %%a in ('dir /b /ad *.*') do (
   for /f "delims=" %%i in ('dir /s /b /a-d "%%a\*.jpg"') do (
      echo.ren "%%i" "A_%%a_B_Y%%~xni"
   )
)
echo.&pause

作者: lac     时间: 2009-8-7 02:57
谢谢moniuming!用6个文件夹尝试后格式正确,接下来的的问题是,Y1,Y2,Y3...这些是一种代称,而实际上有以下的对应关系:
Y1    SE-C-010
Y2    SE-F-1-010
Y3    SE-F-1-040
Y4    SE-F2-010
Y5    SE-F2-020
Y6    SE-F2-030
Y7    SE-F2-040
Y8    SE-F2-050
Y9    SE-F3-010
Y10  SE-F3-030
Y11  SE-F3-040
Y12  SE-F3-060
Y13  SE-F3-080
Y14  SE-F-4-060
Y15  SE-F-4-070
Y16  SE-F-4-080
Y17  SE-F-4-160
Y18  SE-A-1-010
Y19  SE-A-1-020

这似乎要用到以前一篇帖子里的指定重命名方法了,不知如何能整合进来呢?
作者: moniuming     时间: 2009-8-7 03:28
这是最后一次回复...
如果显示符合要求,把ren前的"echo."去掉即可进行重命名操作...
@echo off
setlocal enabledelayedexpansion
set n=0
for %%a in (SE-C-010 SE-F-1-010 SE-F-1-040 SE-F2-010 SE-F2-020 SE-F2-030 SE-F2-040 SE-F2-050 SE-F3-010 SE-F3-030 SE-F3-040 SE-F3-060 SE-F3-080 SE-F-4-060 SE-F-4-070 SE-F-4-080 SE-F-4-160 SE-A-1-010 SE-A-1-020) do (
   set /a n+=1
   set "y!n!=%%a"
)
set n=0
for /f "delims=" %%a in ('dir /b /ad *.*') do (
   for /f "delims=" %%i in ('dir /s /b /a-d "%%a\*.jpg"') do (
      set /a n+=1
      call echo.ren "%%i" "A_%%a_B_%%y!n!%%%%~xni"
   )
)
echo.&pause

作者: lac     时间: 2009-8-7 04:10
moniuming兄,谢谢回复!
well...出问题了,我使用了9个文件夹进行试用,执行后只有前18条实现了A_X_B_SE-C-010格式的指定改名,且执行结果为01改为A_X_B_SE-C-01001,10改为A_X_B_SE-C-01010,而18条以后仅进行了A_X_B_01,A_X_B_10这样的改动,不知是怎么回事
作者: moniuming     时间: 2009-8-7 04:37

@echo off
setlocal enabledelayedexpansion
set n=0
for %%a in (SE-C-010 SE-F-1-010 SE-F-1-040 SE-F2-010 SE-F2-020 SE-F2-030 SE-F2-040 SE-F2-050 SE-F3-010 SE-F3-030 SE-F3-040 SE-F3-060 SE-F3-080 SE-F-4-060 SE-F-4-070 SE-F-4-080 SE-F-4-160 SE-A-1-010 SE-A-1-020) do (
   set /a n+=1
   set "y!n!=%%a"
)
for /f "delims=" %%a in ('dir /b /ad *.*') do (
   set n=0
   for /f "delims=" %%i in ('dir /s /b /a-d "%%a\*.jpg"') do (
      set /a n+=1
      call ren "%%i" "A_%%a_B_%%y!n!%%%%~xi"
   )
)
echo.&pause
[ Last edited by moniuming on 2009-8-7 at 04:42 ]
作者: lac     时间: 2009-8-7 04:57
现在使用了80个文件夹进行了回显试用,效果良好没有错误。拜谢moniuming兄!