标题: 怎样用文本行给对应的文件重命名.
[打印本页]
作者: zzhh612
时间: 2007-4-3 14:25
标题: 怎样用文本行给对应的文件重命名.
有如下歌名文本(GM.txt)百行:
聪明累
伤痕-林忆莲
爱上了
遇见 - 孙燕姿
徐怀钰 - 分飞
酸酸甜甜就是我
流氓大亨
江南
.....
...
且在e:\music文件夹中有按数字序号命名的MP3(1~100),文件名与同名行号的歌名一一对应(即1.mp3 对应的聪明累,2.mp3对应的是伤痕-林忆莲....)我怎样才能用批处理将这百首歌所对应的歌名进行重命名.
作者: flyinspace
时间: 2007-4-3 15:04
标题: 假设该批处理在e;\music这个文件夹里。
@echo off & EnableDelayedExpansion
set count=0
for /f "tokens=* " %%i in ( GM.txt) do (
set /a count=!count!+1
ren "!count!.mp3" "%%i.mp3"
)
-----------------------------------------------------------------------
如此就改完了。。
作者: everest79
时间: 2007-4-3 15:06
for /f "delims=" %%i in (gm.txt) do (
set /a x+=1
call :renmp3 %x% %%i
)
pause
:renmp3
ren mp3%1.mp3 %2.mp3
作者: flyinspace
时间: 2007-4-3 15:08
Originally posted by everest79 at 2007-4-3 02:06 AM:
for /f "delims=" %%i in (gm.txt) do (
set /a x+=1
call :renmp3 %x% %%i
)
pause
:renmp3
ren mp3%1.mp3 %2.mp3
噢。。这个文件会出问题的。。
你忘记加goto :EOF 了。。
而且可以设想最后一次会出现文件找不到的情况。。
作者: wudixin96
时间: 2007-4-3 22:40
Originally posted by flyinspace at 2007-4-3 03:04 PM:
@echo off & EnableDelayedExpansion
set count=0
for /f "tokens=* " %%i in ( GM.txt) do (
set /a count=!count!+1
ren "!count!.mp3" " ...
为何要加空格??不能直接tokens=*吗??
还有
for /f "delims=" %%i in (gm.txt) do (
set /a x+=1
call :renmp3 %x% %%i
)
pause
:renmp3
ren mp3%1.mp3 %2.mp3
不需要变量延迟吗?是否是在for之前没有定义x,所有不需要变量延迟??
下面一段好像明白了。如果延迟写成set /a x=!x!+1。
Last edited by wudixin96 on 2007-4-3 at 10:49 PM ]
作者: lxmxn
时间: 2007-4-4 00:54
标题: 我也来灌灌水~
@echo off
for /f "tokens=1* delims=:" %%a in ('findstr /n .* GM.txt') do ren %%a.mp3 "%%b".mp3
作者: zzhh612
时间: 2007-4-4 02:05
楼上everest79的最后一名句应为
ren %x%.mp3 %1.mp3
改了后运行成功.
谢谢答复.
Last edited by zzhh612 on 2007-4-4 at 02:06 AM ]
作者: a201341717
时间: 2007-4-4 02:37
作者: zzhh612
时间: 2007-4-4 02:43
标题: 2楼的代码没成功,不知为何
该批处理在e:\music这个文件夹里。GM.txt也在该文件夹中.
运行2楼的代码后显示:
运算符不存在。
系统找不到指定的文件。
哪个运算符不存在呀???文件都在呀.
作者: zzhh612
时间: 2007-4-4 02:45
标题: 6楼的运行成功,
运行正确而且简洁,值得学习.
作者: qingfushuan
时间: 2007-4-4 04:16
6F的构思巧妙,赞一个
学习了