Board logo

标题: [文件操作] [已解决]如何获取指定文件夹下全部MP3文件的播放时长的总和 [打印本页]

作者: a1999zqw    时间: 2016-3-26 15:54     标题: [已解决]如何获取指定文件夹下全部MP3文件的播放时长的总和

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

求某个文件夹下全部MP3文件的播放时长的总和,谢谢老师
作者: pcl_test    时间: 2016-3-26 17:52

本帖最后由 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()));
复制代码

作者: a1999zqw    时间: 2016-3-26 18:46

感谢版主,哪里输入或替换成我要的文件夹,谢谢?
作者: pcl_test    时间: 2016-3-26 19:26

回复 3# a1999zqw

把批处理文件跟mp3文件放一起运行或修改//&cls&pushd "D:\指定目录\"&dir /b……
作者: happy886rr    时间: 2016-3-26 19:33

本帖最后由 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
作者: WHY    时间: 2016-3-26 19:39

第三方 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
复制代码

作者: a1999zqw    时间: 2016-3-26 19:50

感谢各位老师,谢谢啦
作者: a1999zqw    时间: 2016-6-17 22:34     标题: 如何将结果输出到c:\1.txt

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

2楼代码如何输出到指定文本?
作者: gawk    时间: 2016-6-17 22:42

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

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

//&cls&dir /b *.mp3|cscript -nologo -e:jscript "%~f0" > "C:\1.txt" &pause&exit
……
作者: ddrwin    时间: 2020-3-15 20:16

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



    这个脚本也可以处理视频文件时长,真是太好了!谢谢大大!
作者: 609980218    时间: 2020-3-16 09:43

又学一招,谢谢大大!




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2