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

[文件操作] 请问批处理怎么把视频音频的时间长度也生成出来呢?

  1. dir *.* /b> 文本档案.txt
复制代码
请问这代码是把当前目录的资源生成一个列表,请问怎么把视频音频的时间长度也生成出来呢?


提供一个不必下载安装 FFmpeg 系列工具的方案
以下代码存为批处理脚本
代码中假定获取当前目录中的mp4和mp3文件时长。
  1. @set @v=1 /*
  2. @echo off &dir/b/s/a-d *.mp4 *.mp3|cscript /e:jscript "%~f0" &exit/b
  3. */
  4. var ws = WSH.stdin, sa = new ActiveXObject('shell.application');
  5. while (!ws.atendofstream) {
  6. var F = ws.readline(); //逐行读取
  7. var i = F.lastIndexOf('\\'), pathF = F.substr(0,i+1), nameF = F.substr(i+1);
  8. var ns = sa.namespace(pathF), pn = ns.parsename(nameF);
  9. WSH.echo(ns.getdetailsof(pn,27)+' '+nameF);
  10. }
复制代码

TOP

获取单个视频文件的时长:
  1. ffprobe.exe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "1.mp4"
复制代码
批量删除小于6秒和大于240秒的mp4视频文件:
  1. @echo off
  2. REM 1、下载命令行工具 FFmpeg 例如:ffmpeg-n6.0-latest-win64-gpl-6.0.zip
  3. REM https://github.com/BtbN/FFmpeg-Builds/releases
  4. REM 2、解压缩之后把 ffprobe.exe 和此脚本放在同一个文件夹下
  5. set "DurationMin=20"
  6. set "DurationMax=240"
  7. cd /d "%~dp0"
  8. for /f "delims=" %%i in ('dir /b /s /a-d *.mp4') do (
  9.     set "ThisFile=%%i"
  10.     for /f "delims=." %%a in ('ffprobe.exe -v error -show_entries format^=duration -of default^=noprint_wrappers^=1:nokey^=1 "%%i"') do (
  11.         if %%a lss %DurationMin% (
  12.             echo File to delete: [%%a] "%%i"
  13.             del /f /q "%%i"
  14.         ) else if %%a gtr %DurationMax% (
  15.             echo File to delete: [%%a] "%%i"
  16.             del /f /q "%%i"
  17.         )
  18.     )
  19. )
  20. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

大神帮下忙

TOP

返回列表