Batch file 在批处理文件中动态获取输入文件以对其执行操作

Batch file 在批处理文件中动态获取输入文件以对其执行操作,batch-file,ffmpeg,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 d

我创建了一个用于将视频帧提取到
.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"
如何动态传递输入文件

如果可能,还要讨论如何动态存储文件,即在执行批处理时传递要存储文件的目录

@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
命令。

使用参数:
ffmpg-i“%~1”-r5“%~2\createdFrames%%d.jpg”
(只是猜测您的意图,因为问题不清楚)如上所述,我正在尝试使用ffmpeg创建视频帧。当我传递与批处理文件存储在同一文件夹中的视频文件名时,上述命令(ffmpeg-i sample.mp4-r 5 E:\frames\createdFrames%%d.jpg)工作正常。现在我想动态传递输入文件(本例中为Sample.mp4),即当我执行批处理文件时,我将能够动态传递输入视频的名称。如果我们不知道您希望我们帮助您做什么,我们将无法帮助您。您是想让用户从脚本本身中输入文件名,还是想用文件名作为输入参数/参数来运行脚本(在我之前的评论中都提到过)。从技术上讲,您不应该发布一个完全正常工作的脚本示例,要求某人为其添加一个新功能。我们不是来为您编写脚本以供订购的,您应该编写自己的代码,并在此处发布代码失败部分的一部分,以解释它所显示的特定问题。我需要在运行时将视频传递到批处理文件,而不是将其硬编码到批处理文件中。
ffmpeg-i“%1”-r 5 E:\frames\createdFrames%%d.jpg
mybatch.bat filename.mp4