求高手写一P处理: 批量重命名
现有文件夹A,该文件夹下全为.JPG格式图像文件,其名字格式均为:
0_6870-7912_071109_173933_2734.jpg
0_6870-7912_071109_173935_2735.jpg
0_6870-7912_071109_173938_2736.jpg
......| | | |
| | | |
| | | |
1 2 3 4
现要求将竖线指明的第3列数字加1,同样的第4列数字也加1,前面的第1. 2列保持不变,
如将文件 0_6870-7912_071109_173933_2734.jpg
重命名后变为: 0_6870-7912_071109_173934_2735.jpg
依此类推,将全部文件重命名.
望大侠贴个代码,在此先谢过了!!!!!
不好意思,本人的确忽略了一个很重要的问题,忘了说明了,还存在有以0开头的那种,
比如:
0_6870-7912_071109_085109_0273.jpg
0_6870-7912_071109_085112_0274.jpg
0_6870-7912_071109_085115_0275.jpg
这样的情况,第3和第4列是以0开头的了,那么运行就会出错了,说进制不对,该怎么办呢?
并且要改名以后位数不能变动哦,比如最后是4位就得是4位!!
以下是BAT代码:
===============================================
@echo off
for /f "tokens=1-5 delims=._" %%a in ('dir /b *.jpg') do (call :111 %%a %%b %%c %%d %%e)
ren *.jpp *.jpg
pause
exit
:111
set d=%4
set e=%5
:222
if %d:~0,1%==0 (set d=%d:~1% &goto 222)
set /a d+=1
set d=000000%d%
set d=%d:~-6%
:333
if %e:~0,1%==0 (set e=%e:~1% &goto 333)
set /a e+=1
set e=0000%e%
set e=%e:~-4%
ren %1_%2_%3_%4_%5.jpg %1_%2_%3_%d%_%e%.jpp
==============================================
以下是VBS代码:
==============================================
Dim fso, f, fd, arr, path
path="."
Set fso = CreateObject("Scripting.FileSystemObject")
Set fd = fso.GetFolder(path)
for each f in fd.files
if lcase(right(f,3))="jpg" then
arr=split(fso.getbasename(f),"_")
len3=len(arr(3)):len4=len(arr(4))
arr(3)=arr(3)+1:arr(3)="0000"&arr(3)
arr(4)=arr(4)+1:arr(4)="0000"&arr(4)
f.name = arr(0)&"_"&arr(1)&"_"&arr(2)&"_"&right(arr(3),len3)&"_"&right(arr(4),len4)&".jpg"
end if
next
set fd = nothing
set fso = nothing
==============================================
[ Last edited by hulongzhuo on 2008-3-28 at 05:07 PM ]
现有文件夹A,该文件夹下全为.JPG格式图像文件,其名字格式均为:
0_6870-7912_071109_173933_2734.jpg
0_6870-7912_071109_173935_2735.jpg
0_6870-7912_071109_173938_2736.jpg
......| | | |
| | | |
| | | |
1 2 3 4
现要求将竖线指明的第3列数字加1,同样的第4列数字也加1,前面的第1. 2列保持不变,
如将文件 0_6870-7912_071109_173933_2734.jpg
重命名后变为: 0_6870-7912_071109_173934_2735.jpg
依此类推,将全部文件重命名.
望大侠贴个代码,在此先谢过了!!!!!
不好意思,本人的确忽略了一个很重要的问题,忘了说明了,还存在有以0开头的那种,
比如:
0_6870-7912_071109_085109_0273.jpg
0_6870-7912_071109_085112_0274.jpg
0_6870-7912_071109_085115_0275.jpg
这样的情况,第3和第4列是以0开头的了,那么运行就会出错了,说进制不对,该怎么办呢?
并且要改名以后位数不能变动哦,比如最后是4位就得是4位!!
以下是BAT代码:
===============================================
@echo off
for /f "tokens=1-5 delims=._" %%a in ('dir /b *.jpg') do (call :111 %%a %%b %%c %%d %%e)
ren *.jpp *.jpg
pause
exit
:111
set d=%4
set e=%5
:222
if %d:~0,1%==0 (set d=%d:~1% &goto 222)
set /a d+=1
set d=000000%d%
set d=%d:~-6%
:333
if %e:~0,1%==0 (set e=%e:~1% &goto 333)
set /a e+=1
set e=0000%e%
set e=%e:~-4%
ren %1_%2_%3_%4_%5.jpg %1_%2_%3_%d%_%e%.jpp
==============================================
以下是VBS代码:
==============================================
Dim fso, f, fd, arr, path
path="."
Set fso = CreateObject("Scripting.FileSystemObject")
Set fd = fso.GetFolder(path)
for each f in fd.files
if lcase(right(f,3))="jpg" then
arr=split(fso.getbasename(f),"_")
len3=len(arr(3)):len4=len(arr(4))
arr(3)=arr(3)+1:arr(3)="0000"&arr(3)
arr(4)=arr(4)+1:arr(4)="0000"&arr(4)
f.name = arr(0)&"_"&arr(1)&"_"&arr(2)&"_"&right(arr(3),len3)&"_"&right(arr(4),len4)&".jpg"
end if
next
set fd = nothing
set fso = nothing
==============================================
[ Last edited by hulongzhuo on 2008-3-28 at 05:07 PM ]

