中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-04 00:00
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 怎样用文本行给对应的文件重命名.
可打印版本  868 / 10
第1楼 zzhh612 发表于 2007-04-03 14:25
中级用户 发帖 103 积分 278
怎样用文本行给对应的文件重命名.
有如下歌名文本(GM.txt)百行:
聪明累
伤痕-林忆莲
爱上了
遇见 - 孙燕姿
徐怀钰 - 分飞
酸酸甜甜就是我
流氓大亨
江南
.....
...
且在e:\music文件夹中有按数字序号命名的MP3(1~100),文件名与同名行号的歌名一一对应(即1.mp3 对应的聪明累,2.mp3对应的是伤痕-林忆莲....)我怎样才能用批处理将这百首歌所对应的歌名进行重命名.
第2楼 flyinspace 发表于 2007-04-03 15:04
银牌会员 发帖 517 积分 1,206
假设该批处理在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"
)
-----------------------------------------------------------------------
如此就改完了。。
第3楼 everest79 发表于 2007-04-03 15:06
金牌会员 发帖 1,127 积分 2,564
for /f "delims=" %%i in (gm.txt) do (
set /a x+=1
call :renmp3 %x% %%i
)
pause

:renmp3
ren mp3%1.mp3 %2.mp3
第4楼 flyinspace 发表于 2007-04-03 15:08
银牌会员 发帖 517 积分 1,206
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 了。。

而且可以设想最后一次会出现文件找不到的情况。。
第5楼 wudixin96 发表于 2007-04-03 22:40
银牌会员 发帖 931 积分 1,928
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 ]
第6楼 lxmxn 发表于 2007-04-04 00:54
版主 发帖 4,938 积分 11,386
我也来灌灌水~



第7楼 zzhh612 发表于 2007-04-04 02:05
中级用户 发帖 103 积分 278
楼上everest79的最后一名句应为
ren %x%.mp3 %1.mp3

改了后运行成功.
谢谢答复.

[ Last edited by zzhh612 on 2007-4-4 at 02:06 AM ]
第8楼 a201341717 发表于 2007-04-04 02:37
贫困用户 发帖 20 积分 -2
第9楼 zzhh612 发表于 2007-04-04 02:43
中级用户 发帖 103 积分 278
2楼的代码没成功,不知为何
该批处理在e:\music这个文件夹里。GM.txt也在该文件夹中.
运行2楼的代码后显示:
运算符不存在。
系统找不到指定的文件。

哪个运算符不存在呀???文件都在呀.
第10楼 zzhh612 发表于 2007-04-04 02:45
中级用户 发帖 103 积分 278
6楼的运行成功,
运行正确而且简洁,值得学习.
第11楼 qingfushuan 发表于 2007-04-04 04:16
高级用户 发帖 327 积分 502
6F的构思巧妙,赞一个

学习了
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023