中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 排序mp3播放顺序,可处理长文件和含空格的文件名
作者:
标题: 排序mp3播放顺序,可处理长文件和含空格的文件名 上一主题 | 下一主题
thisiscx
新手上路





积分 11
发帖 6
注册 2007-11-9
状态 离线
『楼 主』:  排序mp3播放顺序,可处理长文件和含空格的文件名

我编写的用dos批处理排序mp3播放顺序。请指正。
    通常播放的顺序即为复制的顺序。因此,控制歌曲文件向U盘或mp3播放器的复制顺序即可产生按指定顺序播放的效果。顺序可以为修改时间、文件大小、文件名、扩展名的正反序。排序方式在dir的参数/O中指定,/O-d为将优先复制修改时间最新的文件。更多的排序方式参见dir /?中/O的内容。
    在本示例批处理中默认U盘(或mp3播放器)盘符为J:。在D:有d:\music文件夹,歌曲文件在d:\music中。示例批处理lcopy.bat的内容为:

rem 批处理文件名:lcopy.bat
rem 功能:按指定顺序复制文件,顺序可以为修改时间、文件大小、文件名、扩展名的正反序
rem       排序方式在dir的参数/O中指定,/O-d为将优先复制修改时间最新的文件
rem 典型应用:按指定顺序复制mp3文件到U盘,通常复制的顺序即为播放的顺序
rem 参数:默认U盘盘符为J:。在D:有d:\music文件夹,mp3文件在d:\music中
@echo 按指定顺序复制mp3文件到U盘.............................................................
d:
cd\music
if exist (lcopy.txt) del lcopy.txt
dir /o-d /b >lcopy.txt
FOR /F "delims=;" %%i in (lcopy.txt) do copy /y "%%i" j:\music
del lcopy.txt
@echo 复制结束...............................................................................

2007-11-14 12:06
查看资料  发送邮件  发短消息 网志   编辑帖子
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  

这个命令就可以搞定了:
for /f "delims=" %%a in ('dir /o-d/s/b/a-d D:\music') do copy "%%a" J:\music


   此帖被 +1 点积分    点击查看详情   
评分人:【 thisiscx 分数: +1  时间:2007-11-15 16:44


2007-11-14 16:14
查看资料  发送邮件  发短消息 网志   编辑帖子
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 3 楼』:  

需要修改的地方:

既然用“>lcopy.txt”,那就可以不用“if exist (lcopy.txt) del lcopy.txt”,如果单纯用“dir /o-d /b >lcopy.txt”生成列表,会连新生成的“lcopy.txt”也会加入,改为“dir /o-d /b *.mp3>lcopy.txt”

   此帖被 +1 点积分    点击查看详情   
评分人:【 thisiscx 分数: +1  时间:2007-11-15 16:44




2007-11-15 09:20
查看资料  发短消息 网志   编辑帖子
thisiscx
新手上路





积分 11
发帖 6
注册 2007-11-9
状态 离线
『第 4 楼』:  

谢谢lxmxn版主和zh159大侠。

2007-11-15 16:26
查看资料  发送邮件  发短消息 网志   编辑帖子
thisiscx
新手上路





积分 11
发帖 6
注册 2007-11-9
状态 离线
『第 5 楼』:  

请问一下,按lxmxn版主的语句执行时提示找不到文件,因为实际执行时“”中只有文件名,没有路径名,请问应该怎么办?

2007-11-15 16:43
查看资料  发送邮件  发短消息 网志   编辑帖子
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  

应该不会出现这个问题的,你是写成“D:\music”这个形式的么?

2007-11-15 18:06
查看资料  发送邮件  发短消息 网志   编辑帖子
thisiscx
新手上路





积分 11
发帖 6
注册 2007-11-9
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by lxmxn at 2007-11-15 18:06:
应该不会出现这个问题的,你是写成“D:\music”这个形式的么?

我是将你的语句复制下来,去掉了/s/a-d后直接用的。有问题吗?

2007-11-16 12:20
查看资料  发送邮件  发短消息 网志   编辑帖子
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 8 楼』:  

当然有问题了。
你如果去掉的话,就这样吧:
for /f "delims=" %%a in ('dir /o-d/b D:\music') do copy "D:\music\%%a" J:\music


   此帖被 +1 点积分    点击查看详情   
评分人:【 thisiscx 分数: +1  时间:2007-11-19 10:28


2007-11-16 12:41
查看资料  发送邮件  发短消息 网志   编辑帖子
thisiscx
新手上路





积分 11
发帖 6
注册 2007-11-9
状态 离线
『第 9 楼』:  

明白了,谢谢lxmxn版主

2007-11-19 10:27
查看资料  发送邮件  发短消息 网志   编辑帖子
thisiscx
新手上路





积分 11
发帖 6
注册 2007-11-9
状态 离线
『第 10 楼』:  

请问,怎样用copy命令按随机顺序复制文件呢?

   此帖被 -2 点积分    点击查看详情   
评分人:【 HAT 分数: -2  时间:2009-2-3 05:38


2009-2-2 17:30
查看资料  发送邮件  发短消息 网志   编辑帖子
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 11 楼』:  

(我插个嘴)不得不惊讶一下…… 上面是 2007到2009之间的超长对话 ……



综合型编程论坛

我的作品索引
  
2009-2-2 18:27
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: