中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-07 22:41
48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » [已解决]求大侠写一批量重命名代码
可打印版本  2,523 / 38
第1楼 hulongzhuo 发表于 2008-03-28 12:04
中级用户 发帖 135 积分 294
[已解决]求大侠写一批量重命名代码
求高手写一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 ]
第2楼 hulongzhuo 发表于 2008-03-28 12:09
中级用户 发帖 135 积分 294
自已先顶一下了~~~~

在线求答!!
第3楼 huahua0919 发表于 2008-03-28 12:24
银牌会员 发帖 780 积分 1,608
第4楼 hulongzhuo 发表于 2008-03-28 12:37
中级用户 发帖 135 积分 294
先谢过3楼的大侠!

另外,我怎么指明路径啊?
比如将A文件夹放在 D:\A ,要怎么加入上面的代码啊?
第5楼 huahua0919 发表于 2008-03-28 12:39
银牌会员 发帖 780 积分 1,608
'dir/b d:\A\*.jpg'
第6楼 hulongzhuo 发表于 2008-03-28 12:47
中级用户 发帖 135 积分 294
回复huahua0919

代码没有成功执行, 闪了一下就没反应了,是什么原因呢???
第7楼 huahua0919 发表于 2008-03-28 12:53
银牌会员 发帖 780 积分 1,608
闪过后,看文件有没改掉
第8楼 hulongzhuo 发表于 2008-03-28 13:01
中级用户 发帖 135 积分 294
没有改变,

'dir/b d:\A\*.jpg' 这句话好像不行哦
第9楼 huahua0919 发表于 2008-03-28 13:05
银牌会员 发帖 780 积分 1,608
检查你路径有没空格 有的话 加dir/b "d:\A\*.jpg"
第10楼 hulongzhuo 发表于 2008-03-28 13:12
中级用户 发帖 135 积分 294
@echo off&&setlocal enabledelayedexpansion
d:
cd a
for /f "delims=" %%i in ('dir /b "d:\a\*.jpg"') do (
for /f "delims=_. tokens=1,2,3,4,5" %%a in ("%%i") do (
set x=%%d
set y=%%e
set/a x+=1
set/a y+=1
ren %%i %%a_%%b_%%c_!x!_!y!.jpg)
)


执行后是有反应了,但是第3.4列没有按要求去变化,位数都变得不对了,很乱,好像是没有正确计算一样的..

[ Last edited by hulongzhuo on 2008-3-28 at 03:16 PM ]
第11楼 bat-zw 发表于 2008-03-28 13:30
金牌会员 发帖 1,276 积分 3,105
试了下,还只能分两次来:
假设有10个这样的文件


[ Last edited by zw19750516 on 2008-3-28 at 01:37 PM ]
第12楼 bat-zw 发表于 2008-03-28 13:35
金牌会员 发帖 1,276 积分 3,105
晕,我理解错了,不好意思
第13楼 26933062 发表于 2008-03-28 13:52
银牌会员 发帖 879 积分 2,268
第14楼 bat-zw 发表于 2008-03-28 14:03
金牌会员 发帖 1,276 积分 3,105
也可直接进入路径:
在前面加上:
cd\
d:
cd a
第15楼 hulongzhuo 发表于 2008-03-28 14:41
中级用户 发帖 135 积分 294
13楼的兄弟,,执行后这样的提示:

无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
系统找不到指定的文件。

[ Last edited by hulongzhuo on 2008-3-28 at 03:11 PM ]
1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023