windows - 使用批处理根据分辨率重命名我的视频文件

标签 windows video batch-file cmd mediainfo

我想根据它们的分辨率重命名我的视频文件,例如,对于 1080p 的视频“bla bla.mp4”,我想将其重命名为“bla bla [H.264 1080p]” .该脚本应该能够自动检测视频的分辨率,而且如果文件已经重命名,则不应重命名。我找不到检查分辨率的方法,所以我尝试使用它对于 1080p 文件:

    FOR /r %%a in (*.mp4) DO (IF EXIST *[H.264*.mp4 (
    ECHO Already done) 
    ELSE (
    REN "%%~a" "%%~na [H.264 1080p].mp4"))

但它所做的是一次又一次地检查同一个文件,该文件已经重命名,因此回复总是“已经完成”。

最佳答案

这个问题超出了 SO 问题的范围。不过我会回答的,因为今天是星期天。

  • 下载并安装命令行版本
  • mediainfo 二进制文件的路径添加到您的系统或用户 PATH 环境变量
  • 复制重命名脚本,替换你的视频文件夹的路径,rename命令前有一个安全echo,如果输出看起来不错,请将其删除
  • 脚本测试已经存在的已经处理的文件(Peter Wright 建议)

重命名脚本:

@echo off & setlocal
cd X:\video\path
for /f "delims=" %%i in ('dir /b /a-d *.mp4') do (
    set "fnameo=%%~ni"
    set "fnamee=%%~xi"
    set "Height="
    for /f "delims=" %%j in ('mediainfo "--Inform=Video;%%Height%%" "%%~i"') do set "Height=%%j" 
    setlocal enabledelayedexpansion
    call set "selftest=%%fnameo:[H.264 !Height!p]=%%"
    if "!selftest!" equ "!fnameo!" if not exist "!fnameo! [H.264 !Height!p]!fnamee!" (
        echo rename "!fnameo!!fnamee!" "!fnameo! [H.264 !Height!p]!fnamee!"
    )
    endlocal
)

输出示例:

rename "Handbrake.0.9.8.mp4" "Handbrake.0.9.8 [H.264 800p].mp4"
rename "Hybrid.2012.10.21.1.mp4" "Hybrid.2012.10.21.1 [H.264 800p].mp4"
rename "Womble.mp4" "Womble [H.264 1080p].mp4"

关于windows - 使用批处理根据分辨率重命名我的视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17258480/

相关文章:

c++ - 程序关闭期间 CoreMessaging.dll 中出现未处理的异常

java - 将受限站点添加到 Windows Internet 选项

c++ - 修复 "disconnected"Windows 驱动器映射

java - 在 Windows 上运行 Java 独立应用程序(作为服务)

c++ - 如何将多个堆数组传递给新线程?

windows - 签署代码时出现 "No signature was present in the subject"错误

video - 使用 ffmpeg 调整视频大小 - 保持纵横比

javascript - 隐藏(不是删除)HTML5 视频控件

html - 带有 Bootstrap 的完全响应式视频

windows - 移动具有特定名称的所有文件(排序)WINDOWS 8