| @echo off&title Puso.D.False |
| :: 08-10-11更新,添加歌曲试听、备份功能。 |
| :: 借助第三方工具sed.exe curl.exe |
| :: sed.exe教程+下载:http://bbs.bathome.net/thread-1929-1-1.html |
| :: curl.exe下载: http://bbs.bathome.net/thread-1761-1-2.html |
| :: 下载以上两个工具,放到此批处理所在目录或%windir%目录中。 |
| :: 第一次运行需要指定歌曲存储路径,在指定目录下将创建urllist文件夹,用以存储歌曲链接,方便以后使用。 |
| :: 若要指定其他目录,把此批处理最后一行的":: 上次指定的歌曲路径"删除,重新运行此批处理即可。 |
| :: 成功率=>90%,出错原因可能是因为文本提取错误,或无此歌曲。 |
| echo.&echo 初始化…………&echo.&del %temp%\tmp.txt 2>nul |
| ping /n 2 nul||(echo">www.baidu.com>nul||(echo 网络出现故障………&pause>nul&exit/b) |
| :begin |
| setlocal enabledelayedexpansion |
| cls&echo\&echo\ |
| for /f "tokens=1*" %%a in ('findstr /v $ %~fs0') do ( |
| if "%%a" neq "::" ( |
| set/p var= 输入歌曲存储路径: |
| echo\&echo\&set/p "sure= 你输入的是【!var!】,是否确定(y/n)?" |
| if /i "!sure:~,1!" equ "y" ( |
| (echo.&call set/p=:: %%var%%<nul)>>"%~0" |
| ) else ( |
| cls&endlocal&goto begin |
| )) else ( |
| set "var=%%b" |
| )) |
| if "%var:~-1%" equ "\" set "var=%var:~,-1%" |
| if not exist "%var%\urllist\" md "%var%\urllist" |
| cls&echo\&echo\ |
| set /p music= 输入歌曲名称(x退出): |
| if /i "%music%" equ "x" exit/b |
| set "a=%music%"&set "music=%music: =+%" |
| if exist "%var%\%a%.mp3" ( |
| cls&echo\&echo\ |
| set /p "su= 歌曲已经存在,是否继续(y/n)?" |
| if /i "!su:~,1!" equ "n" endlocal&goto begin |
| ) |
| if exist "%var%\urllist\%a%.txt" ( |
| for /f "usebackq tokens=2*" %%i in ("%var%\urllist\%a%.txt") do (set/a y+=1&set "_!y!=%%j") |
| goto next |
| ) |
| curl -s "http://one.cn.yahoo.com/s?p=%music%&v=music&ei=gbk&pid=ysearch&source=218&x="|^ |
| sed "/http.*i\.music\.cn\.yahoo\.com.down\.php/^!d;s/.*\(http.*ranges.[0-9]\).*/\1/">%temp%\tmp.txt |
| for /f "delims=" %%i in (%temp%\tmp.txt) do ( |
| set/a n+=1 |
| if !n! leq 10 ( |
| for /f "delims=" %%a in ('curl "%%i" -s^|sed "/歌曲出处.*http.*\.mp3.*/^!d;s/.*\^(http.*mp3\^).*/\1/"') do ( |
| set/a x+=1 |
| echo !x! …………^> %%a |
| set "_!x!=%%a" |
| )) else ( |
| goto next |
| ))>>"%var%\urllist\%a%.txt" |
| :next |
| cls&echo\&echo\ |
| type "%var%\urllist\%a%.txt"&echo\&echo\ |
| set /p num= 输入歌曲编号试听 (e返回,x退出): |
| if /i "%num:~,1%" equ "e" endlocal&goto begin |
| if /i "%num:~,1%" equ "x" exit/b |
| if not defined _%num% goto next |
| start wmplayer.exe "!_%num%!" |
| echo.&echo.&set /p down= 是否下载(y/n)? |
| echo\&echo\ |
| if /i "%down:~,1%" equ "y" (curl -o "%var%\%a%.mp3" "!_%num%!") else goto next |
| del %temp%\tmp.txt 2>nul&endlocal&cls&echo\&echo\ |
| echo 下载完成,任意键返回……&pause>nul&goto beginCOPY |