[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
只是"命名管道",其实BAT可以做到相似的功能..
用AT /every:date[,...] 或者 /next:date[,...] 来区别命名..然后AT | FINDSTR 来查找
这样就可以做到多个CMD交换数据甚至命令, 还支持网络远程..

如果是I/O管道,大概写第3方也不太容易

TOP

回复 18楼 的帖子

我觉得这个“相似”距离真正的命名管道还相差很远,呵呵。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 16楼 的帖子

wget和curl都是比较强大的下载命令
http://bbs.bathome.net/thread-3981-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

netbenton兄

netbenton兄,你那个代码不好处理啊。
把它放在开头,它只显示当前的播放,如果进行下一曲播放它会新建MPLAYER进程,而且原窗口代码变乱,播放不受控制。如果放到末尾,它就一闪而过。
你的代码太高深了,你帮忙改改:
因为你的代码只支持单曲播放,我想把它作为子程序调用,给它留了个标签“YRICS”,调用的播放子程序如下:
  1. :PLAY_FILE
  2. CALL :PLAY
  3. !MPP! !INPUT!
  4. GOTO MAIN
复制代码
CALL LAY是调用播放时先调用的头部,用来显示一些公用信息。
!MPP! 是播放器路径名。
!INPUT!是在窗口输入的歌曲路径名。
MPlayer使用参数 -PLAYLIST 播放列表文件;
MPlayer似乎有一种不是基于帧而是基于时间的字幕,不懂能否改装成歌词,我对那些一窍不通……

[ 本帖最后由 cjiabing 于 2010-10-21 12:17 编辑 ]
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

linux下的MP支持通过管道写入命令..
比如得到当前播放时间是 get_time_pos
windows这个,我这个似乎有问题..
没法测试

TOP

我确实很佩服老大的技术。。。。

不过我也觉得使用BAT来编写这种程序真的是折腾。。。

没有必要。。。浪费。。。其实换了用  VC 或 VB或C等都会简单许多
效果也好很多,质量也没有得谈拉。。。。

当然拉,会这些语言是一个前提咯

TOP

回复 23楼 的帖子

可能楼主只是想巩固、提高一下自己的批处理知识吧
说不定楼主在其他语言方面也有很深的造诣呢
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 23楼 的帖子

就像从上海到香港,有钱人坐飞机,我等穷人只好坐长途客车咯!~
就像人家说那女的很抽象,可你还是情人眼里出西施,爱的死去活来的!~
批处理,不过如此,你,也如此!~
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

脚本语言都如此了..
可以简单而又高效的完成某些操作任务..
简单的几行语句,完成繁复的任务。
不必象C一样,想写个简单的东西,都要先找来一大堆的库..

在系统高层上,脚本语言很有优势,但是底层的操作就经常无能为力了。

TOP

回复 26楼 的帖子

呵呵,看来你学得不少,向你学习。
我除了批处理其它的一窍不通,心里有想法,要表达出来,只能用这些简单的命令了,你说我不玩批处理玩什么呢?
批处理是简单,但有时候简单有简单的好处,这也是为什么这么多人对批处理感兴趣的原因吧!~
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回楼主,我已找到支持列表歌词的办法了,不过还有点问题,等解决了再发上来

TOP

回复 28楼 的帖子

收到!你厉害!慢慢搞,不急,我外出学习两天!
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

我写了一个歌词显示的.,支持暂停/继续,停止,上/下一首,拖拽到任意时间。
并且歌词是一个新的CMD窗口,不妨碍操作窗口。
但是,因为我这里MP问题,无法得到播放时间..
因此测试用的是系统时间相减..你可以更改部分代码,增加获取播放时间的代码。

以下代码不完全测试...
也还有不少问题,比如:
1, 没有支持毫秒,现在是精确到秒,抓系统时间然后计算毫秒增加不少负担,而且我使用的是findstr, 就算加上估计最多精确到0.3-0.5秒吧..
2, STOP,pause ,没有空闲CPU的指令,使用ping可能延迟有点高,所以一直在循环,造成CPU不小负担。
3, 毕竟CMD的,鼠标点击窗口 或者 非前台状态可能也会延迟。。。

控制命令如下:
@表示插入CMD语句,可用于退出,如@exit
$表示插入控制语句,
at 00:00 /next:1 @exit  ;退出歌词秀
at 00:00 /next:1 @pause  ;暂停歌词秀,输入健后才能继续
at 00:00 /next:1 $stop  ;停止歌词秀
at 00:00 /next;1 $goto$02:03   ; 跟随播放进度,跳转到02:03秒
at 00:00 /next:1 $start$e:\aaa.lrc  ; 直接开始播放aaa.mp3的时候加入,则加载新的歌词。如果是在暂停状态,则忽略参数开始继续暂停时间运行。
at 00:00 /next:1 $next$e:\aaa.lrc   ;其实跟start差不多,用它是打算完善后用在播放列表功能上。
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. color 2b
  4. :main %1
  5. if "%1" == "" echo 歌词不存在! & goto :暂停
  6. for /f "tokens=1,2 delims=:[]" %%a in ('findstr "ti:" %1') do set _ti=%%b
  7. title=%_ti%
  8. for /f "tokens=1,2 delims=[]" %%a in ('findstr "[0-9][0-9]:[0-5][0-9]." %1') do set "#%%a=%%b"
  9. set 初始时间=%time%
  10. set /a 初始分=%初始时间:~3,2%
  11. set /a 初始秒=%初始时间:~6,2%
  12. :loop
  13. set 临时时间=%time%
  14. call :临时时间 %临时时间:~3,2% %临时时间:~6,2% %临时时间:~9,2%
  15. at |findstr "@" >nul && call :cmdd
  16. at |findstr "$" >nul && call :contrl
  17. for /f "tokens=1,2 delims==" %%a in ('set # ^|findstr "%ktime%"') do call :显示歌词 %%b
  18. goto :loop
  19. goto :eof
  20. :临时时间
  21. set varm=%1 & set vars=%2 & set varms=%3
  22. if %varm% LSS %初始分% (set /a varm=varm+60)  2>nul
  23. if %vars% LSS %初始秒% (set /a varm=varm-1 & set /a vars=vars+60)  2>nul
  24. set /a 临时分=varm-初始分  2>nul
  25. set /a 临时秒=vars-初始秒  2>nul
  26. IF %临时分% LEQ 9 set 临时分=0%临时分%
  27. IF %临时秒% LEQ 9 set 临时秒=0%临时秒%
  28. set ktime=%临时分%:%临时秒%
  29. goto :eof
  30. :显示歌词
  31. if NOT "%*" == "" cls
  32. echo.%*
  33. goto :eof
  34. :cmdd 插入命令行语句
  35. for /f "tokens=1* delims=@" %%a in ('at ^|findstr "[0-9]"') do at /del /y & %%b
  36. goto :eof
  37. :contrl 控制歌词,比如暂停,停止,下一首等。
  38. for /f "tokens=2,3 delims=$" %%a in ('at ^|findstr "[0-9]"') do (
  39.         at /del /y
  40.         echo %%b | findstr /i "pause" && goto :暂停
  41.         echo %%b | findstr /i "next" && call :main %%c
  42.         echo %%b | findstr /i "stop" && call :stop
  43.         echo %%b | findstr /i "goto" && call :gt %%c
  44. )
  45. goto :eof
  46. :暂停
  47. title=%_ti% -- 暂停
  48. for /f "tokens=2,3 delims=$" %%a in ('at ^|findstr "[0-9]"') do (
  49.         at /del /y
  50.         echo %%b | findstr /i "pause" && call :暂停
  51.         echo %%b | findstr /i "next" && call :main %%c
  52.         echo %%b | findstr /i "stop" && call :stop
  53.         echo %%b | findstr /i "goto" && call :gt %%c
  54.         echo %%b | findstr /i "start" && goto :loop
  55. )
  56. goto :暂停
  57. :stop
  58. title=%_ti% -- 停止
  59. for /f "tokens=2,3 delims=$" %%a in ('at ^|findstr "[0-9]"') do (
  60.         at /del /y
  61.         echo %%b | findstr /i "pause" && call :暂停
  62.         echo %%b | findstr /i "next" && call :main %%c
  63.         echo %%b | findstr /i "stop" && goto :stop
  64.         echo %%b | findstr /i "goto" && call :gt %%c
  65.         echo %%b | findstr /i "start" && call :main %%c
  66. )
  67. goto :stop
  68. :gt mm:ss 参数为歌曲播放时间
  69. set ktime=%*
  70. goto :eof
复制代码

[ 本帖最后由 caruko 于 2010-10-22 18:11 编辑 ]

TOP

搞到可以列表播放时显示歌词了

批处理多彩的mp3歌词器,支持列表播放时显示歌词。

请看本楼附件!!

增加了卡拉OK方式显示歌词


使用方法:
把:名列表 .txt 文件,或者,歌词名;可以多个;拖放到主批处理上即可播放。

首次运行会自动搜索环境:
mplayer.exe 的位置,以及歌词库路径,并保存到与批处理同名的.ini文件,免去下次再搜索。

所以首次运行较慢,保存有设置后,再次运行就快了。


特点:

1,改变进度亦可自动跟上进度

2,带进度条

3,智能匹配查找歌词,可以根据歌词信息及文件名搜索等多种方式。

4,识别重叠歌词格式,如:
   [02:34.56][01:11.18]黑色笑靥掉了 雪白眼泪掉了

5,识别歌词内的作者信息

6,模拟卡拉OK歌词显示(当前行歌词逐字高亮)

7,小修改:增加文件中含有特殊字符的兼容性;在歌词还未开始时显示Waiting...

[ 本帖最后由 netbenton 于 2010-10-25 19:35 编辑 ]

TOP

需要mpplay.exe是吧

TOP

返回列表