找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 37965|回复: 10

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

[复制链接]
发表于 2016-3-26 15:54:58 | 显示全部楼层 |阅读模式
本帖最后由 a1999zqw 于 2016-3-26 19:51 编辑

求某个文件夹下全部MP3文件的播放时长的总和,谢谢老师
发表于 2016-3-26 17:52:13 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
ivor + 1 感谢分享

查看全部评分

 楼主| 发表于 2016-3-26 18:46:53 | 显示全部楼层
感谢版主,哪里输入或替换成我要的文件夹,谢谢?
发表于 2016-3-26 19:26:24 | 显示全部楼层
回复 3# a1999zqw

把批处理文件跟mp3文件放一起运行或修改//&cls&pushd "D:\指定目录\"&dir /b……
发表于 2016-3-26 19:33:00 | 显示全部楼层
本帖最后由 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
发表于 2016-3-26 19:39:33 | 显示全部楼层
第三方 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
复制代码
 楼主| 发表于 2016-3-26 19:50:20 | 显示全部楼层
感谢各位老师,谢谢啦
 楼主| 发表于 2016-6-17 22:34:41 | 显示全部楼层

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

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

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

评分

参与人数 1PB -6 收起 理由
pcl_test -6 未按版规发帖

查看全部评分

发表于 2016-6-17 22:42:28 | 显示全部楼层
本帖最后由 pcl_test 于 2016-6-18 00:05 编辑

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

//&cls&dir /b *.mp3|cscript -nologo -e:jscript "%~f0" > "C:\1.txt" &pause&exit
……
发表于 2020-3-15 20:16:37 | 显示全部楼层
pcl_test 发表于 2016-3-26 17:52



    这个脚本也可以处理视频文件时长,真是太好了!谢谢大大!
发表于 2020-3-16 09:43:43 | 显示全部楼层
又学一招,谢谢大大!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 19:58 , Processed in 0.022035 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表