Board logo

标题: [文本处理] 获取文件夹下视频文件的分辨率和帧率 [打印本页]

作者: gddsssko    时间: 2024-5-8 17:53     标题: 获取文件夹下视频文件的分辨率和帧率

文件夹下有很多子文件夹,子文件夹下有几个视频,想知道这些视频是分辨率和帧率(比如8K60fps),能以目录树形式展示出来吗?
作者: 77七    时间: 2024-5-8 23:34

简单显示
下载mediainfo (http://bcn.bathome.net/s/tool/index.html?key=mediainfo)
  1. @echo off
  2. rem 批处理保存为utf-8编码格式
  3. chcp 65001 >nul
  4. cd /d "%~dp0"
  5. for /d %%d in (*) do (
  6. echo %%d
  7. for %%i in ("%%d\*.mp4") do (
  8. for /f "delims=" %%a in ('mediainfo --Output^="Video;分辨率:%%Width%%x%%Height%% 帧率:%%FrameRate%%" "%%i"') do (
  9. echo ---%%~nxi %%a
  10. )
  11. )
  12. echo=
  13. )
  14. pause
复制代码

作者: gddsssko    时间: 2024-5-9 11:49

本帖最后由 gddsssko 于 2024-5-9 12:00 编辑

回复 2# 77七
显示:Press any key to continue . . .,然后就没结果了。请问是我哪里没做对?
环境变量也配置了
C:\Users\12345>MediaInfo
Usage: "MediaInfo [-Options...] FileName1 [Filename2...]"
"MediaInfo --Help" for displaying more information
作者: 77七    时间: 2024-5-9 12:08

回复 3# gddsssko


   文件夹名称都不显示吗?把批处理文件放在顶楼中的”文件夹下“再试试
作者: gddsssko    时间: 2024-5-9 13:12

回复 4# 77七


    可以了,是我把测试文件直接放到主文件夹下的没显示。
    请问如果直接把分辨率和帧率写入到子文件夹上应该怎么改?(只考虑子文件夹下的其中任意一个视频,因为子文件夹下的视频分辨率和帧率都一样),有条件再加上子文件夹内存大小。
作者: gddsssko    时间: 2024-5-9 14:51

回复 4# 77七

@echo off
chcp 65001 >nul
cd /d "%~dp0"
for /d %%d in (*) do (
    setlocal enabledelayedexpansion
    for %%i in ("%%d\*.mp4") do (
        for /f "delims=" %%a in ('mediainfo --Output^="Video;%%Width%%x%%Height%% %%FrameRate%%" "%%i"') do (
            set "info=%%a"
            ren "%%d" "%%d !info!"
            endlocal
            exit /b
        )
    )
)
pause
请问我改的这个怎么处理完第一个子目录就结束了
作者: 77七    时间: 2024-5-9 15:06

本帖最后由 77七 于 2024-5-9 15:08 编辑

回复 6# gddsssko


   exit /b和call搭配使用及时退出循环。
  1. @echo off
  2. rem 批处理保存为utf-8编码格式
  3. chcp 65001 >nul
  4. cd /d "%~dp0"
  5. for /f "delims=" %%d in ('dir /b /ad') do (
  6. for /f "tokens=3" %%a in ('dir /s /-c "%%d" ^|findstr /rec:" bytes"') do (
  7. set s=%%a
  8. )
  9. call :1 "%%d"
  10. )
  11. pause & exit
  12. :1
  13. for %%i in ("%~1\*.mp4") do (
  14. for /f "delims=" %%a in ('mediainfo --Output^="Video;分辨率:%%Width%%x%%Height%% 帧率:%%FrameRate%%" "%%i"') do (
  15. for /f "delims=." %%b in ('powershell -c "%s%/1024/1024"') do (
  16. ren "%~1" "%~1 %%a 大小:%%b M"
  17. exit /b
  18. )
  19. )
  20. )
  21. exit /b
复制代码

作者: gddsssko    时间: 2024-5-9 15:29

回复 7# 77七
ok了,感谢大佬,大佬真帅
作者: gddsssko    时间: 2024-5-16 10:08

回复 7# 77七


    请问我后期又加入了一些子文件夹,再命名的话那些已经改名的文件夹会叠加视频信息,怎么判定已经改名的不执行这个批处理呢?
作者: 77七    时间: 2024-5-16 11:42

修改7楼代码第5行为:
  1. for /f "delims=" %%d in ('dir /b /ad ^|findstr /rvc:"[0-9][0-9][0-9][0-9]*x[0-9][0-9][0-9][0-9]*"') do (
复制代码


即排除  包含 "3位及以上数字x3位及以上数字" 的文件名
作者: gddsssko    时间: 2024-5-16 12:46

回复 10# 77七


    感谢感谢,大佬真帅




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