中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-05 19:24
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助] 批量更改文件名(已解决) 查看 2,045 回复 16
楼 主 [求助] 批量更改文件名(已解决) 发表于 2007-09-11 15:27 ·  中国 广东 东莞 电信
初级用户
★★
积分 136
发帖 57
注册 2007-09-08 11:11
18年会员
UID 96854
性别 男
状态 离线
我想批量更改某目录下所有的.mp3

文件名前面是没有规律的,但后面是两个"+"号中间夹带有5个数字符号,我想把两个"+"号中的编号及两个"+"号都删掉
如:把 alsdkfj12+12548+.mp3, uoqor+89751+.mp3, .... 中国人+98562+.mp3 改成为 alsdkfj12.mp3, uoqor.mp3, .... 中国人.mp3

问题已解决,谢谢两位热心的大侠

[ Last edited by userwww on 2007-9-13 at 09:46 PM ]
2 发表于 2007-09-11 18:12 ·  中国 香港 腾讯云
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线


  1. @echo off
  2. for /r %%i in (*.mp3) do (
  3. call :th %%~ni
  4. call ren "%%i" "%%nm%%.mp3"
  5. )
  6. pause

  7. :th
  8. set nm=%1
  9. set nm=%nm:+=%
  10. set nm=%nm:~0,-5%
wudixin96于: 2007-09-11 18:01



请先测试
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
userwww +2 2007-09-13 16:12
3 发表于 2007-09-11 18:23 ·  中国 广东 东莞 电信
初级用户
★★
积分 136
发帖 57
注册 2007-09-08 11:11
18年会员
UID 96854
性别 男
状态 离线
出现:"存在一个重名文件,或是找不到文件"。

不知什么原因,
4 发表于 2007-09-11 18:31 ·  中国 香港 腾讯云
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
我这测试没有问题
5 发表于 2007-09-11 18:32 ·  中国 广东 广州 电信
初级用户
★★
积分 136
发帖 51
注册 2007-08-04 21:31
19年会员
UID 94657
性别 男
状态 离线

@echo off
for /r %%i in (*.mp3) do (
for /f "tokens=1,2,3 delims=+" %%a in ("%%i") do ren "%%i" "%%~na".mp3
)
pause

\


测试成功.!!!!!!!!!!!!!

[ Last edited by bbq5201 on 2007-9-11 at 10:26 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
userwww +2 2007-09-13 16:11
6 发表于 2007-09-11 18:50 ·  中国 广东 东莞 电信
初级用户
★★
积分 136
发帖 57
注册 2007-09-08 11:11
18年会员
UID 96854
性别 男
状态 离线
Originally posted by bbq5201 at 2007-9-11 06:32 PM:
\


谢谢回复,
可是显示"命令语法不正确"
7 发表于 2007-09-11 18:57 ·  中国 广东 东莞 电信
初级用户
★★
积分 136
发帖 57
注册 2007-09-08 11:11
18年会员
UID 96854
性别 男
状态 离线
Originally posted by wudixin96 at 2007-9-11 06:12 PM:



请先测试



谢谢指点,可以用了,但有些歌名改不了,还有些删得太多了,把整个文件名都删了
8 发表于 2007-09-11 19:08 ·  中国 香港 腾讯云
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线


  1. @echo off
  2. for /r %%i in (*.mp3) do (
  3. call :th "%%~ni"
  4. call ren "%%i" "%%nm%%.mp3"
  5. )
  6. pause

  7. :th
  8. set nm=%~1
  9. set nm=%nm:~0,-7%
wudixin96于: 2007-09-12 08:19



。。

[ Last edited by wudixin96 on 2007-9-12 at 08:31 AM ]
9 发表于 2007-09-11 19:08 ·  中国 广东 广州 电信
初级用户
★★
积分 136
发帖 51
注册 2007-08-04 21:31
19年会员
UID 94657
性别 男
状态 离线
Originally posted by userwww at 2007-9-11 06:50 PM:
Originally posted by bbq5201 at 2007-9-11 06:32 PM:
\


谢谢回复,
可是显示"命令语法不正确"



也许没做判断吧..!!!!!
10 发表于 2007-09-11 22:54 ·  中国 广东 东莞 电信
初级用户
★★
积分 136
发帖 57
注册 2007-09-08 11:11
18年会员
UID 96854
性别 男
状态 离线
Originally posted by wudixin96 at 2007-9-11 07:08 PM:



发现又忘了考虑文件名有空格了,现在再试试?



可以用了,谢谢

[ Last edited by userwww on 2007-9-13 at 05:25 PM ]
11 发表于 2007-09-11 23:45 ·  中国 广东 东莞 电信
初级用户
★★
积分 136
发帖 57
注册 2007-09-08 11:11
18年会员
UID 96854
性别 男
状态 离线
Originally posted by bbq5201 at 2007-9-11 06:32 PM:
\


测试成功.!!!!!!!!!!!!!

谢谢,这下可以了,但发现个小问题:文件名中有点(.)时,它就会把点后面的部分给删了
12 发表于 2007-09-13 19:06 ·  中国 广东 广州 荔湾区 电信
初级用户
★★
积分 136
发帖 51
注册 2007-08-04 21:31
19年会员
UID 94657
性别 男
状态 离线
@echo off
for /r %%i in (*.mp3) do (
for /f "delims=+" %%a in ("%%i") do ren "%%i" "%%~xna".mp3
)
pause

这样吧!
13 发表于 2007-09-13 20:21 ·  中国 广东 东莞 电信
初级用户
★★
积分 136
发帖 57
注册 2007-09-08 11:11
18年会员
UID 96854
性别 男
状态 离线
用了12楼的内容,那个点的问题解决了,但又出了个新问题,好像改下面那个文件名后,生成多一个扩展名,有两个扩展名,改其它文件没事,就是下面那个有问题,不知怎么回事

013王心凌_爱你+00006+.mp3 >>> 013王心凌_爱你.mp3.mp3

[ Last edited by userwww on 2007-9-13 at 08:23 PM ]
14 发表于 2007-09-13 21:43 ·  中国 广东 东莞 电信
初级用户
★★
积分 136
发帖 57
注册 2007-09-08 11:11
18年会员
UID 96854
性别 男
状态 离线
把12楼代码中的扩展名改为*号,就没有13楼的问题了,谁能解释一下
15 发表于 2007-09-13 22:28 ·  中国 广东 广州 海珠区 电信
初级用户
★★
积分 136
发帖 51
注册 2007-08-04 21:31
19年会员
UID 94657
性别 男
状态 离线
请高手帮忙了...!!

[ Last edited by bbq5201 on 2007-9-13 at 10:36 PM ]
论坛跳转: