中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: for 循坏查找并播放 mp3 上一主题 | 下一主题
rootkit
初级用户





积分 63
发帖 32
注册 2007-12-21
状态 离线
『楼 主』:  for 循坏查找并播放 mp3

在本机上查找mp3并播放。

for /R .  %%i  in (*.mp3)  do @start %%i

有三个问题感到不解:
   1--> 文件名问题。文件名中有空格的时候,就提示说找不到。比如,a b.mp3 会说找不到a.mp3,b.mp3;

   2-->目录中名问题。跟文件名问题差不多,目录名中有空格会说找不到目录。例如,hello world\ab.mp3。找不到目录hello。
     怎么解决空格的问题呢?

  3-->播放次序问题。如果找到,则只会播放最后一个文件。如何控制播放次序的问题呢?

2008-4-24 18:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 2 楼』:  

1.for /r 后面是盘符和路径,如无则指定当前目录,你那个点是没用的
2.解决空格的问题就是start "%%i",把变量用双引号引起来
3.要控制连续播放是很难的,但做到随机播放一首还是可以的



批处理之家新域名:www.bathome.net
2008-4-24 18:51
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
rootkit
初级用户





积分 63
发帖 32
注册 2007-12-21
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-4-24 06:51 PM:
1.for /r 后面是盘符和路径,如无则指定当前目录,你那个点是没用的
2.解决空格的问题就是start "%%i",把变量用双引号引起来
3.要控制连续播放是很难的,但做到随机播放一首还是可以的

对于第二个,"变量用双引号引起来" 也是没用的,我试过,结果是会产生一大堆CMD窗口。害得我挨个敲“exit”。
  怎么可以做到随机播放?

望高人不吝指导。。。。

2008-4-24 19:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by rootkit at 2008-4-24 19:00:



对于第二个,"变量用双引号引起来" 也是没用的,我试过,结果是会产生一大堆CMD窗口。害得我挨个敲“exit”。
  怎么可以做到随机播放?

望高人不吝指导。。。。

在指定盘查找并随机播放一首mp3:
@echo off&setlocal enabledelayedexpansion
for /f "delims=:" %%i in ('dir /s /b d:\*.mp3 ^|findstr /n .*') do set list=%%i
set /a m=%random%%%%list%+1
for /f "delims=" %%i in ('dir /s /b d:\*.mp3') do (
     set /a n+=1,
     if !n! equ %m% start "%%i"
)
[ Last edited by zw19750516 on 2008-4-24 at 07:25 PM ]



批处理之家新域名:www.bathome.net
2008-4-24 19:14
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
rootkit
初级用户





积分 63
发帖 32
注册 2007-12-21
状态 离线
『第 5 楼』:  

刚试过了。的确做到了随机播放,真是高人啊!

之不过,if !n! equ %m% start "%%i" 中,%%i 加“”了,所以只弹出窗口,却没有播放,去掉就OK了。
谢谢。

2008-4-24 20:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 6 楼』:  呵呵,高人就不是了:

终于改正确了,我日,要考虑的地方真多
想做到随机循环播放也不是不可以,只是麻烦点啊(时间控制也是大概吧):
假如是用ttpayer.exe播放的
@echo off&setlocal enabledelayedexpansion
for /f "tokens= 1* delims=:" %%i in ('dir /s /b d:\*.mp3 ^|findstr /n .*') do set list=%%i&set puth=%%~dpj
:begin
set n=0&set /a m=%random%%%%list%+1
for /f "tokens=3,4 delims= " %%i in ('dir /s /a-d d:\*.mp3 ^|findstr "mp3"') do (
     set /a n+=1
     if !n! equ %m% (
        set bt=%%i&set bt=!bt:,=!&set /a t=!bt!/12800
        start %puth%%%j
        ping /n !t! 127.1>nul
        taskkill /f /im ttplayer.exe>nul
        goto begin
    )
)
[ Last edited by zw19750516 on 2008-4-25 at 08:05 AM ]



批处理之家新域名:www.bathome.net
2008-4-24 21:02
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 7 楼』:  

@start "" "%%~i"

2008-4-25 10:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 8 楼』:  

这是我自己用的一个随机点歌的BAT,提供以参考
@echo off
setlocal enabledelayedexpansion
mode con cols=18 lines=3
color 1e
title 音乐试听
:again
set z=0
for /f "delims=" %%a in ('dir /s/b/a-d "d:\kugoo\mp3\*.mp3"') do (
  set /a z+=1
  set fen!z!="%%a"
)
:ming
set /a ming=%random%%%200+1
if %ming% gtr !z! goto ming
start "" /min "c:\program files\windows media player\wmplayer.exe" !fen%ming%!
:aaa
echo.
set /p x=  y换歌, n退出:
if /i %x%==y goto more
if /i %x%==n goto out
cls&goto aaa
:more
taskkill /f /im wmplayer.exe /t 1>nul 2>nul
cls&goto again
:out
taskkill /f /im wmplayer.exe /t 1>nul 2>nul
mode con cols=85 lines=25
color
exit /b


2008-4-25 13:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
rootkit
初级用户





积分 63
发帖 32
注册 2007-12-21
状态 离线
『第 9 楼』:  有些忙,今天才有空。

各位的代码我看了。

   1--------先从简单的开始说。先说7楼兄弟的。《@start "" "%%~i" 》 妙啊,很巧妙的解决了空格的问题。但是,用起来好像放的绝大多数都是所在目录的最后一首歌。
   2-------- 再看看6楼的高人。解决了随机播放的问题,但仍然没解决空格的问题。虽然如此,也有改进,解决了我说的弹出一大堆CMD窗口的问题。
   ping /n !t! 127.1>nul
     taskkill /f /im ttplayer.exe>nul

     上面这两行我认为有些多余。我们可以设置一个循坏,要播放另一首,直接敲回车;不用采取taskkill命令,因为这类播放器好像不支持多进程。
    3--------最后看8楼兄弟的。多余的话不说,就一个字----强!

2008-4-30 18:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
rootkit
初级用户





积分 63
发帖 32
注册 2007-12-21
状态 离线
『第 10 楼』:  问题解决了

感谢各位兄弟的支持。小弟我开了眼界,又学到不少东西。
   zw19750516 兄的热心、耐心与knoppix7 兄的简洁与moniuming 兄的强悍 着实让俺学到了平常学不到的东西,因为代码里面包含了各位兄弟的思考。
  再次谢谢各位兄弟。

2008-4-30 18:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: