Board logo

标题: [求助] 批量更改文件名(已解决) [打印本页]

作者: userwww     时间: 2007-9-11 15:27    标题: [求助] 批量更改文件名(已解决)

我想批量更改某目录下所有的.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 ]
作者: wudixin96     时间: 2007-9-11 18:12


  Quote:

  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

请先测试
作者: userwww     时间: 2007-9-11 18:23
出现:"存在一个重名文件,或是找不到文件"。

不知什么原因,
作者: wudixin96     时间: 2007-9-11 18:31
我这测试没有问题
作者: bbq5201     时间: 2007-9-11 18:32


  Quote:
@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 ]
作者: userwww     时间: 2007-9-11 18:50
[quote]Originally posted by bbq5201 at 2007-9-11 06:32 PM:
\


谢谢回复,
可是显示"命令语法不正确"
作者: userwww     时间: 2007-9-11 18:57


  Quote:
Originally posted by wudixin96 at 2007-9-11 06:12 PM:



请先测试

谢谢指点,可以用了,但有些歌名改不了,还有些删得太多了,把整个文件名都删了
作者: wudixin96     时间: 2007-9-11 19:08


  Quote:

  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 ]
作者: bbq5201     时间: 2007-9-11 19:08


  Quote:
Originally posted by userwww at 2007-9-11 06:50 PM:
[quote]Originally posted by bbq5201 at 2007-9-11 06:32 PM:
\


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

也许没做判断吧..!!!!!
作者: userwww     时间: 2007-9-11 22:54


  Quote:
Originally posted by wudixin96 at 2007-9-11 07:08 PM:



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

可以用了,谢谢

[ Last edited by userwww on 2007-9-13 at 05:25 PM ]
作者: userwww     时间: 2007-9-11 23:45
[quote]Originally posted by bbq5201 at 2007-9-11 06:32 PM:
\


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

谢谢,这下可以了,但发现个小问题:文件名中有点(.)时,它就会把点后面的部分给删了
作者: bbq5201     时间: 2007-9-13 19:06
@echo off
for /r %%i in (*.mp3) do (
for /f "delims=+" %%a in ("%%i") do ren "%%i" "%%~xna".mp3
)
pause

这样吧!
作者: userwww     时间: 2007-9-13 20:21
用了12楼的内容,那个点的问题解决了,但又出了个新问题,好像改下面那个文件名后,生成多一个扩展名,有两个扩展名,改其它文件没事,就是下面那个有问题,不知怎么回事

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

[ Last edited by userwww on 2007-9-13 at 08:23 PM ]
作者: userwww     时间: 2007-9-13 21:43
把12楼代码中的扩展名改为*号,就没有13楼的问题了,谁能解释一下
作者: bbq5201     时间: 2007-9-13 22:28
请高手帮忙了...!!

[ Last edited by bbq5201 on 2007-9-13 at 10:36 PM ]
作者: acai     时间: 2007-9-13 22:29
果然都是牛叉人
作者: userwww     时间: 2007-9-13 23:01
[quote]Originally posted by bbq5201 at 2007-9-13 10:28 PM:
请高手帮忙了...!!

嘻嘻,乱撞的.再请教多两个问题:

  把某个目录下的所有MP3文件生成一个列表,然后读取列表里的文件名在一个指定的目录DDD(包括子目录)下搜索,再把搜索到的文件复制到一个指定的目录里c:\temp\
我这样做,,不知出错在哪里请指点
c:\

cd C:\Documents and Settings\Administrator\桌面\AAA

for /r %%a in (*.mp3) do @if exist %%a echo %%~na>>mp3.txt

for /r %%i in (mp3.txt) do copy d:\ddd\"%%~na.MP3" c:\temp\