Board logo

标题: 自编dos多功能音乐播放器2.0版,新手学习,高手指教! [打印本页]

作者: tianzizhi     时间: 2009-5-24 12:09    标题: 自编dos多功能音乐播放器2.0版,新手学习,高手指教!

大学期间,对dos比较感兴趣,写过1.0的音乐播放器,现在加入一些功能,推出2.0,欢迎大家使用,提出自己的想法,以后还会继续加入其它功能!


使用说明:
1.本软件完全免费,核心播放器为dos版mplayer,本人主要完成设计和控制功能

2.程序文件:dos多功能播放器主控制程序,mplayer主播放器,
  where,choice附加工具,url歌曲.txt,歌曲列表.txt,目录.txt。

3.随机+指定播放功能+url播放,改善mplayer不能随机播放url的缺陷.
  
4.换歌请按Pgup or ESC,四箭头调节进度,按空格键暂停。

5.播放网络歌曲时,请在url歌曲.txt文件中编辑歌曲地址。

6.八种播放模式随你选,在显示(退出)字样时输入exit,回车,可退出此模式.。
   
7.有什么建议或问题,请联系:zhangjihai095@163.com或QQ:419503077

程序源代码:

REM  Productversion:  2. 0. 0. 0
REM  Fileversion:  2. 0. 0. 0
REM  authorname: tianzizhi
REM  Appiconname: dos多功能音乐播放器

@echo off
title dos多功能音乐播放器  作者:张吉海(cn-dos)
:bof
cls
setlocal enabledelayedexpansion
del %temp%\dir\*.* /a/f/s/q >nul 2>nul
del %temp%\shuffle\*.* /a/f/s/q >nul 2>nul
set /a a=0
color 74
echo   *************************************************************************
echo   ======================欢迎使用dos多功能音乐播放器=======================
echo   ====================制作人:张吉海 #cn-dos:tianzizhi#===================
echo       1.本软件完全免费,核心播放器为dos版mplayer,本人主要完成设计和控制功能
echo       2.随机+指定播放功能+url播放,改善mplayer不能随机播放url的缺陷.
echo       3.换歌请按Pgup or ESC,四箭头调节进度,按空格键暂停.
echo       4.目录歌曲随便加,摆脱掉目录歌曲更改时,播放器列表要也要手到更改的烦恼.
echo       5.具有筛选和搜索目录功能,音乐目录里有其它文件也可以,不影响播放.        
echo       6.支持音乐格式:mp3,wma,wmv,avi,mpeg,rm,rmvb,并自动判断目录内有无歌曲.
echo       7.八种播放模式随你选,在显示(退出)字样时输入exit,回车,可退出此模式.   
echo       8.有什么建议或问题,请联系:zhangjihai095@163.com或QQ:419503077
echo   *************************************************************************
set biao=  *************************************************************************
set biao2=   =================== 欢迎使用dos随机+指定音乐播放器=====================
set biao3=   ==================制作人:张吉海 #cn-dos:tianzizhi#====================
set biao4=  *************************************************************************

attrib.exe +h +s %temp%\*.bat >nul 2>nul
if not exist mplayer\mplayer.exe echo 错误,找不到mplayer.exe,请把mplayer放到本软件同一目录里,然后按任意键继续. && pause
if not exist mplayer\mplayer.exe exit
if exist 目录.txt ( for /f "delims=" %%i in (目录.txt) do set ge=%%i & goto zhu )
set /p ge=请输入歌曲所在目录或盘符(盘符搜索慢),如(d:\音乐或d:\):
echo.
echo 是否记住此目录,若记住下次运行时不必输入目录..
echo 记住后若想再换目录,请删除(目录.txt)或在(目录.txt)里直接改成想要换的目录..
set /p ji=y,n:
if %ji%==y echo %ge% >目录.txt
echo.
goto zhu
:zhu
echo 请稍等,正在搜索文件.......
echo.

if exist %temp%\di.txt >nul 2>nul del %temp%\di.txt /a /f
if exist %temp%\dir  >nul 2>nul rd %temp%\dir /q /s
md %temp%\dir >nul 2>nul
mplayer\where.exe /r %ge%  *.mp3 *.wma *.wmv *.avi *.mp*g *.rm *.rmvb  >%temp%\di.txt  2>nul || echo "错误,文件夹内没有可播放的音乐..." && pause && del 目录.txt /f/a/q 2>nul && exit



if exist %temp%\di.txt echo 搜索成功
set num=1
for /f "delims=" %%i in (%temp%\di.txt) do (
echo %%i>%temp%\dir\!num!.txt
set /a num=!num!+1
)
attrib +h +s %temp%\di.txt >nul 2>nul
attrib +h +s %temp%\dir >nul 2>nul
if exist 歌曲列表.txt del 歌曲列表.txt /a/f/q
if not exist 歌曲列表.txt set /a num=1 & for /f "delims=" %%i in ('mplayer\where.exe /r %ge% *.mp3 *.wma *.wmv *.avi *.mp*g *.rm *.rmvb 2^>nul') do echo !num! %%i>>歌曲列表.txt 2>nul & set /a num=!num!+1
set /a num=!num!-1
echo 歌曲列表已在目录中,请查看.

echo.
:zheng
echo 1 随机播放
echo 2 指定一首播放
echo 3 指定一首循环播放
echo 4 按顺序播放全部
echo 5 按顺序播放若干首歌
echo 6 从列表中选几首喜欢的听
echo 7 根据url播放在线歌曲
echo 8 播放文件中的url在线歌曲
echo .
set /p a=请选择播放模式:
if %a%==1 goto go
if %a%==2 goto yi
if %a%==3 goto bo
if %a%==4 goto shun
if %a%==5 goto xu
if %a%==6 goto tiao
if %a%==7 goto url
if %a%==8 goto fileurl
if not %a%==1  if not %a%==2  if not %a%==3  if not %a%==4 if not %a%==5 if not %a%==6 if not %a%==7 if not %a%==8 echo 错误,请选择正确代号....&echo. & goto zheng

:url
set /p url=请输入歌曲的url地址:
set /p loop=请输入播放次数:
start /b/min/wait mplayer\mplayer %url% -loop %loop%
echo 播放完毕,是否继续播放..
set /p xuan=y,n:
if %xuan%==y goto url
cls
echo %biao%
echo %biao2%
echo %biao3%
echo %biao4%
if %xuan%==n goto zheng

:fileurl
if not exist url歌曲.txt echo 歌曲文件缺失,请在程序目录下新建"url歌曲.txt"文件,把歌曲url加到文件里 && pause
if not exist url歌曲.txt exit
set /p isbuffer=是否随机播放(y/n):
set shufflenum=1
md %temp%\shuffle\ >nul 2>nul
if %isbuffer%==y for /f "delims=" %%a in (url歌曲.txt) do (
echo %%a>%temp%\shuffle\!shufflenum!.txt
set /a shufflenum=!shufflenum!+1
)
if %isbuffer%==y goto shufflego

if %isbuffer%==n for /f "delims=" %%a in (url歌曲.txt) do (
start /b/min/wait mplayer\mplayer %%a
mplayer\choice.exe /c yn /m "go on ok?" /t 2 /d y
if errorlevel 2 cls & goto bof
)

echo 播放完毕,是否继续播放..
set /p xuan=y,n:
if %xuan%==y goto fileurl
cls
echo %biao%
echo %biao2%
echo %biao3%
echo %biao4%
if %xuan%==n goto zheng



:go
set /a b=!num!-1
set /a c=%random% %% %b%+1
for /f "delims=" %%j in (%temp%\dir\%c%.txt) do (
start /b/min/wait mplayer\mplayer "%%j"
mplayer\choice.exe /c yn /m "go on ok?" /t 2 /d y
if errorlevel 5 goto yes
if errorlevel 2 cls & goto bof
:yes
echo %biao%
echo %biao2%
echo %biao3%
echo %biao4%
goto go)

:shufflego
set /a bb=!shufflenum!-1
set /a cc=%random% %% %bb%+1
for /f "delims=" %%j in (%temp%\shuffle\%cc%.txt) do (
start /b/min/wait mplayer\mplayer %%j
mplayer\choice.exe /c yn /m "go on ok?" /t 3 /d y
if errorlevel 5 goto shuffleyes
if errorlevel 2 cls & goto bof
:shuffleyes
echo %biao%
echo %biao2%
echo %biao3%
echo %biao4%
goto shufflego)




:bo
cls
if not exist 歌曲列表.txt echo 歌曲列表已不存在... && pause & goto bof
for /f "delims=" %%i in (歌曲列表.txt) do echo %%i
set /p bofang=请输入你要听歌的代码(或退出此模式):
if %bofang%==exit  cls & goto bof
set /p xun=请输入要循环的次数:
if %bofang% LSS 1  echo 错误,请输入正确代码... & set /p bofang=请输入你要听歌的代码: & set /p xun=请输入要循环的次数:
if %bofang% GTR !num! echo 错误,请输入正确代码...  & set /p bofang=请输入你要听歌的代码: & set /p xun=请输入要循环的次数:

if %bofang% LSS 1 goto bo
if %bofang% GTR !num! goto bo
for /f "delims=" %%i in (%temp%\dir\%bofang%.txt) do @(
set c=1 & goto fang
)
:fang
for /f "delims=" %%i in (%temp%\dir\%bofang%.txt) do @(
echo %biao%
echo %biao2%
echo %biao3%
echo %biao4%
start /min/b /wait mplayer\mplayer "%%i"
set /a c=!c!+1
if !c! LEQ %xun% (goto fang) else (goto bo)
)
:yi
cls
if not exist 歌曲列表.txt echo 歌曲列表已不存在... && pause & goto bof
for /f "delims=" %%i in (歌曲列表.txt) do echo %%i
set /p bofang=请输入你要听歌的代码(或退出此模式):
if %bofang%==exit cls & goto bof
if %bofang% LSS 1  echo 错误,请输入正确代码... & set /p bofang=请输入你要听歌的代码:
if %bofang% GTR !num! echo 错误,请输入正确代码... & set /p bofang=请输入你要听歌的代码:
if %bofang% LSS 1 goto yi
if %bofang% GTR !num! goto yi
for /f "delims=" %%i in (%temp%\dir\%bofang%.txt) do @(
echo %biao%
echo %biao2%
echo %biao3%
echo %biao4%
start /min/b /wait mplayer\mplayer "%%i" & goto yi)
:shun
if not exist 歌曲列表.txt echo 歌曲列表已不存在... && pause & goto bof
for /f "delims=" %%i in (歌曲列表.txt) do echo %%i
for /f "delims=" %%i in (%temp%\di.txt) do @(
echo %biao%
echo %biao2%
echo %biao3%
echo %biao4%
start /min/b /wait mplayer\mplayer "%%i"
mplayer\choice.exe /c yn /m "go on ok?" /t 2 /d y
if not errorlevel 5 if errorlevel 2 cls & goto bof
)
echo 播放完毕,是否继续循环..
set /p xuan=y,n:
if %xuan%==y goto shun
if %xuan%==n exit
:xu
cls
if not exist 歌曲列表.txt echo 歌曲列表已不存在... && pause & goto bof
for /f "delims=" %%i in (歌曲列表.txt) do echo %%i
set /p kai=请输入开始的代号(或退出此模式):
if %kai%==exit cls & goto bof
set /p jie=请输入结束的代号:
if %kai% LSS 1  echo 错误,请输入正确代码... & set /p kai=请输入开始的代码: & set /p jie=请输入结束的代号:
if %kai% GTR !num!  echo 错误,请输入正确代码... & set /p kai=请输入开始的代码: & set /p jie=请输入结束的代号:
if %jie% LSS 1  echo 错误,请输入正确代码... & set /p kai=请输入开始的代码: & set /p jie=请输入结束的代号:
if %jie%  GTR !num! echo 错误,请输入正确代码... & set /p kai=请输入开始的代码: & set /p jie=请输入结束的代号:
if %kai% GTR %jie% echo 错误,请输入正确代码... & set /p kai=请输入开始的代码: & set /p jie=请输入结束的代号:
if %kai% LSS 1 goto xu
if %kai% GTR !num! goto xu
if %jie% LSS 1 goto xu
if %jie%  GTR !num! goto xu
if %kai% GTR %jie% goto xu
goto hu
:hu
for /f "delims=" %%i in (%temp%\dir\%kai%.txt) do @(
echo %biao%
echo %biao2%
echo %biao3%
echo %biao4%
start /min/b /wait mplayer\mplayer "%%i"
set /a kai=!kai!+1
if !kai! LEQ %jie% (goto hu) else (goto xu)
)

:tiao
del %temp%\tiao.txt /s /a /q /f >nul 2>nul
cls
if not exist 歌曲列表.txt echo 歌曲列表已不存在... && pause & goto bof
for /f "delims=" %%i in (歌曲列表.txt) do echo %%i
set /p zong=请输入总共要播放歌曲的个数(或退出此模式):
if %zong%==exit cls & goto bof
if %zong% LSS 1 echo 错误,请输入正确代码... & ping -n 3 127.0.1 >nul 2>nul & goto tiao
if %zong% GTR !num! echo 错误,请输入正确代码... & ping -n 3 127.0.1 >nul 2>nul & goto tiao
for /l %%i in (1,1,%zong%) do @(
set /p %%i=请输入一首歌的代号,并按回车:
if !%%i! LSS 1  echo 错误,请输入正确代码... & ping -n 4 127.0.1 >nul 2>nul & goto tiao
if !%%i! GTR !num! echo 错误,请输入正确代码... & ping -n 4 127.0.1 >nul 2>nul & goto tiao
echo !%%i! >>%temp%\tiao.txt
)
attrib +h +s %temp%\tiao.txt >nul 2>nul
goto kl
:kl
for /f "delims=" %%k in (%temp%\tiao.txt) do (
@ set /a i=%%k
for /f "delims=" %%j in (%temp%\dir\!i!.txt) do @(
echo %biao%
echo %biao2%
echo %biao3%
echo %biao4%
start /min/b /wait mplayer\mplayer "%%j"
)
)
echo 是否循环这几首歌......
set /p we=y,n:
if %we%==y goto kl
if %we%==n goto tiao

程序图片:




程序下载:
dos多功能音乐播放器.rar

下载使用后欢迎评论支持,谢谢!!!!
提示:
若杀毒软件报病毒,则是bat转exe所致,请排除此软件,或用“源码.txt”改后缀名为.bat后运行。




[ Last edited by tianzizhi on 2009-5-27 at 11:34 ]
作者: HAT     时间: 2009-5-24 13:02
DOS乎?CMD乎?批处理乎?
作者: radem     时间: 2009-5-25 07:02
瑞星发现病毒
作者: tianzizhi     时间: 2009-5-25 07:28
瑞星显示病毒是bat转exe所致,请排除此软件,或用源码改后缀名后运行。
我的诺顿都不报,瑞星多事啦
作者: Hanyeguxing     时间: 2009-5-25 11:59
既然说是dos 版滴,怎么内核文件都是win32的?而且bat 脚本语法用的都是增强过的。。。俺糊涂了。。。
作者: tianzizhi     时间: 2009-5-27 11:40
内核播放器为cmd窗口下的程序,和你使用的dos命令一样的,都为exe,批处理用来控制它播放。




欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) Powered by Discuz! 2.5