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

[文件操作] 批处理怎样在文件夹后追加文件夹内视频总时长?

实现 在文件夹文件名后插入文件夹内视频文件总时长,
以分钟形式表示,如果秒数不为0,则在分钟上+1.
如,文件夹内视频总时和1小时5分1秒,计算后标记66,再分钟前后分别加“【” “】”


如使用第三方软件,需要在BAT里设置文件路径,如使用ffmpeg,要在bat标记路径,如D:\tool\ffmpeg.exe
链接:https://pan.baidu.com/s/1l0uoyc616V4REeioKOzc6w?pwd=qcef
提取码:qcef
--来自百度网盘超级会员V10的分享

谢谢

没有处理秒
将文件夹拖到bat上,显示正确,去掉 ren 前的 echo
  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. set folder=%1
  4. pushd %folder%
  5. set/a time=0
  6. for /f "usebackq" %%a in (` dir /b *.mkv `) do (
  7. for /f "usebackq tokens=2,3 delims=: " %%i in (` "ffprobe.exe %%a 2>&1 | findstr Duration" `) do (
  8. set /a time+=%%i*60+%%j
  9. )
  10. )
  11. popd
  12. echo ren %folder% %folder%[%time%]
  13. pause
  14. exit/b
复制代码

TOP

本帖最后由 qd2024 于 2024-1-27 23:44 编辑

回复 2# newswan


    感谢 视频扩展名改为mp4  测试没有成功 帮忙看看

TOP

回复 3# qd2024


将文件夹拖到bat上
或者 手动设置 folder 变量

TOP

回复 4# newswan


    对的 就是拖文件夹到 BAT上 出现这样提示

TOP



这个不能用吗
bat小白,请多指教!谢谢!

TOP

批处理保存为ansi编码呢

QQ 20147578

TOP

回复 7# czjt1234


    试了 提示一样的

TOP

回复 6# 77七


    我试试

TOP

路径有空格?
  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. set folder=%~1
  4. set ffPath=D:\Program Files
  5. pushd "%folder%"
  6. set/a time=0
  7. for /f "usebackq" %%a in (` dir /b *.mkv `) do (
  8. for /f "usebackq tokens=2,3 delims=: " %%i in (` ""%ffpath%\ffprobe.exe" %%a 2>&1 | findstr Duration" `) do (
  9. set /a time+=%%i*60+%%j+1
  10. )
  11. )
  12. echo %time%
  13. popd
  14. echo ren "%folder%" "%folder%[%time%]"
  15. pause
  16. exit/b
复制代码

TOP

ai 给了一个直接获取时长的方法
  1. ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4
  2. 30.024000
复制代码

TOP

本帖最后由 ppll2030 于 2024-1-28 22:17 编辑

二楼的时间好像有问题,我段位低,理解不了。
所以用Batcher大大的分段截取代码,再组合一下。
楼主可以试试。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set folder=%~1
  4. set ffpath=H:\共享影视\Download\FFmpeg\ffmpeg.exe
  5. pushd "%folder%"
  6. for /f "delims=" %%i in ('dir /b /s /a-d *.avi *.mkv *.mp4 *.rmvb *.wmv') do (
  7.     for /f "tokens=2 delims=, " %%a in ('%ffpath% -i "%%i" 2^>^&1 ^| find "Duration:"') do set "str=%%a"
  8.     set str=!str:~0,-3!
  9.     for /f "tokens=1-3 delims=:" %%x in ("!str!") do (
  10.         set "hh=%%x"
  11.         set "mm=%%y"
  12.         set "ss=%%z"
  13.         set /a minutes=1!hh!*60-6000
  14.         set /a minutes+=1!mm!-100
  15.         if !ss! neq 0 (set /a minutes+=1)
  16.     )
  17.    set /a  Totalduration+=!minutes!  
  18. )
  19. popd
  20. echo ren "%~1" "%~n1【!Totalduration!】"
  21. pause
复制代码

TOP

文件名可能有空格
  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. set folder=%~1
  4. set ffPath=D:\Program Files
  5. pushd "%folder%"
  6. set/a time=0
  7. for /f "usebackq tokens=* delims=" %%a in (` dir /b *.mkv `) do (
  8. for /f "usebackq tokens=2,3 delims=: " %%i in (` ""%ffpath%\ffprobe.exe" "%%a" 2>&1 | findstr Duration" `) do (
  9. set /a time+=%%i*60+%%j+1
  10. )
  11. )
  12. echo %time%
  13. popd
  14. echo ren "%folder%" "%folder%[%time%]"
  15. pause
  16. exit/b
复制代码

TOP

回复 10# newswan
提示如下图,帮我再看看,我上传例子文件到百度云盘了,谢谢。


    链接:https://pan.baidu.com/s/1mPzdlyhFy4UY1l6OECw7IA?pwd=nro4
提取码:nro4
--来自百度网盘超级会员V10的分享

TOP

回复 12# ppll2030

提示如下图,帮我再看看,我上传例子文件到百度云盘了,谢谢。

链接:https://pan.baidu.com/s/1mPzdlyhFy4UY1l6OECw7IA?pwd=nro4
提取码:nro4
--来自百度网盘超级会员V10的分享

TOP

返回列表