[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]如何获取指定文件夹下全部MP3文件的播放时长的总和

本帖最后由 a1999zqw 于 2016-3-26 19:51 编辑

求某个文件夹下全部MP3文件的播放时长的总和,谢谢老师

又学一招,谢谢大大!

TOP

pcl_test 发表于 2016-3-26 17:52



    这个脚本也可以处理视频文件时长,真是太好了!谢谢大大!
喜欢钻研批处理

TOP

本帖最后由 pcl_test 于 2016-6-18 00:05 编辑

我也是瞎猜的,随便试试吧。

//&cls&dir /b *.mp3|cscript -nologo -e:jscript "%~f0" > "C:\1.txt" &pause&exit
……
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

如何将结果输出到c:\1.txt

本帖最后由 pcl_test 于 2016-6-18 00:09 编辑

2楼代码如何输出到指定文本?
1

评分人数

TOP

感谢各位老师,谢谢啦

TOP

第三方 tag.exe
http://batch-cn.qiniudn.com/s/tool/?key=tag
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=8" %%i in ('tag E:\音乐\*.mp3 2^>^&1^|findstr /b "Details:"')do (
  4.     set "t=%%i"
  5.     set /a "s+=(1!t::=-100)*60+1!-100"
  6. )
  7. set /a hh=s/3600+100, mm=s%%3600/60+100, ss=s%%60+100
  8. echo !hh:~1!:!mm:~1!:!ss:~1!
  9. pause
复制代码

TOP

本帖最后由 happy886rr 于 2016-3-26 20:09 编辑

码率折算法,参数可自由设置,跟mp3放一起
  1. @echo off&setlocal enabledelayedexpansion
  2. ::***************************
  3. REM 设置阈值
  4. set Thrs=6000000
  5. REM 设置主流码率
  6. set pop=128   ^kbps
  7. REM 设置加权码率
  8. set weig=256  ^kbps
  9. ::***************************
  10. for %%a in (*.mp3) do (
  11. set size=%%~za
  12. if !size! gtr !Thrs! (set bps=!weig!) else (set bps=!pop!)
  13. set /a sec=size/bps*8/1024+sec
  14. )
  15. set /a min=sec/60
  16. echo 总计 !sec!秒
  17. echo 约合 !min!分钟
  18. pause>nul
复制代码
回复 3# a1999zqw

TOP

回复 3# a1999zqw

把批处理文件跟mp3文件放一起运行或修改//&cls&pushd "D:\指定目录\"&dir /b……

TOP

感谢版主,哪里输入或替换成我要的文件夹,谢谢?

TOP

本帖最后由 pcl_test 于 2016-3-26 21:24 编辑
  1. //&cls&dir /b *.mp3|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. function addZero(n){return n<10?'0'+n:n}
  3. function formatSum(t){
  4.     var r = t.split('.');
  5.     r[1]=r[1]?r[1]:'0'
  6.     var hour = parseInt(r[0]/3600);
  7.     var minute = parseInt((r[0]-hour*3600)/60);
  8.     var second = parseInt((r[0]-hour*3600)%60);
  9.     return addZero(hour)+':'+addZero(minute)+':'+addZero(second)+'.'+r[1]
  10. }
  11. var s=0, wo = new ActiveXObject('WMPlayer.OCX');
  12. while (!WScript.StdIn.AtEndOfStream){
  13.     var f = WScript.StdIn.ReadLine();
  14.     var t = wo.newMedia(f).GetItemInfo("Duration");
  15.     //WScript.StdOut.WriteLine(f+'|'+t);
  16.     s = Number((s+parseFloat(t)).toFixed(3));
  17. }
  18. WScript.StdOut.WriteLine(formatSum(s.toString()));
复制代码
1

评分人数

    • ivor: 感谢分享技术 + 1

TOP

返回列表