batch-file - 在批处理文件中动态获取输入文件以对其执行操作
问题描述
我创建了一个批处理文件,它使用ffmpeg将视频帧提取到.jpg
.
ffmpeg -i sample.mp4 -r 5 E:\frames\createdFrames%%d.jpg
它工作得很好并创建了所需的帧,但是我想动态地提供示例视频,即在执行批处理文件时传递它。
如何动态传递输入文件?
如果可能,还讨论如何动态存储文件,即在批处理执行时传递我要存储文件的目录。
解决方案
@echo off
setlocal
set "infile=%~1"
set "outdir=%~2"
if not defined infile set /p "infile=Input file: " || exit /b 1
if not defined outdir set /p "outdir=Output dir: " || exit /b 2
if not exist "%outdir%" md "%outdir%" || exit /b 3
ffmpeg -i "%infile%" -r 5 "%outdir%\createdFrames%%d.jpg"
可以将参数传递给批处理文件,例如batch.bat sample.mp4 E:\frames
如果没有传递参数,输入提示将要求输入文件。如果未定义,将退出。输出目录的输入也是如此。
如果需要,将创建输出目录,如果失败则退出。
如果一切正常,运行ffmpeg
命令。
推荐阅读
- python - Python 不匹配格式 '%Y-%m-%dT%H:%M:%S%Z.%f'
- python - 如何在 Windows 上安装 pyodbc 以与 Python 3.8 一起使用?
- c# - 当我的解决方案中有两个项目时,如何为 SignalR 3.0 指定正确的后端 URL?目前获得 404
- laravel - 数据表不返回添加列的其他查询
- python-3.x - Amazon Neptune:如何使用 tinkerpop/gremlinpython 包在 Python 中创建自定义顶点 ID?
- javascript - PDF:填写表单字段的 Javascript
- git - 获取 Dockerfile 中的分支名称
- git - `git checkout`不重置文件
- ios - 接收远程通知时如何唤醒未运行的应用程序
- elasticsearch - 将大型 json 文件导入到 elasticsearch