2013-05-13 153 views
0

我不是批量编程方面的专家,我的唯一技能是C \ C++。我甚至不知道如何去做这件事。批处理编程循环?

我有一堆像Video1.mp4,Video2.mp4视频(这不是他们的真实名字,但他们确实有指示开始和结束号码)

基本上我有这个FFMPEG命令,我可以使用所有这些转化为16:10的宽高比,看起来是这样的:

"ffmpeg -i "Section 1 Video 1.mp4" -aspect 16:10 OutSection 1 Video 1.mp4" 
"ffmpeg -i "Section 1 Video 2.mp4" -aspect 16:10 OutSection 1 Video 2.mp4" 
"ffmpeg -i "Section 2 Video 1.mp4" -aspect 16:10 OutSection 2 Video 1.mp4" 

现在,而不是一遍一遍写这个命令的,反正是有对我来说,替代号码实际变量?我知道第1部分以视频27结尾,第2部分以视频26结束等等。基本上我需要循环运行165次,所以我不需要编写命令165次。

或者这超出了单纯批处理程序的能力范围吗?

+0

这是否解决您的问题:http://stackoverflow.com/questions/5642021/batch-process-all-files-in-directory – Stolas 2013-05-13 07:03:59

+1

等等,是不是两套报价互相干扰? – user2033427 2013-05-13 08:46:11

回答

0

那么,当然批处理可以做到这一点,真正的问题是你能正确处理框架问题吗?

这里有三种方式 - FFMPEG命令简单回显。删除ECHO以启动。

@ECHO OFF 
SETLOCAL enabledelayedexpansion 
:: way the first 
for /l %%a IN (1,1,27) DO FOR /l %%b IN (1,1,27) DO (
IF EXIST "section %%a video %%b.mp4" ECHO FFMPEG -i "Section %%a Video %%b.mp4" -aspect 16:10 "OutSection %%a Video %%b.mp4" 
) 
ECHO ============================== 
:: Way the second 
for /l %%a IN (1,1,27) DO FOR /l %%b IN (1,1,27) DO (
SET /a total=%%a+%%b 
IF !total! leq 28 ECHO FFMPEG -i "Section %%a Video %%b.mp4" -aspect 16:10 "OutSection %%a Video %%b.mp4" 
) 
ECHO ============================== 
:: Way the third 
FOR %%i IN ("Section * Video *.mp4") DO (
ECHO FFMPEG -i "%%i" -aspect 16:10 "Out%%i" 
) 
ECHO ============================== 

现在 - 这里的问题是 - 您确定您的FFMPEG行吗?在我看来,你已经省略了输出文件名的引号。

而另一个问题是你可以数吗?如果你像你说的那样,第1部分有27个视频,第2部分有26个等等,那么你可能会有27 + 26 + 25 ... 3 + 2 + 1视频转换 - 根据我的观点,这将是378计算 - 更重要的是,批量 - 不是165.

+0

哈哈,是的,我意识到我搞砸了这个命令,但是这是一个模拟命令,看起来像这样,但它不是真正的命令,我用真名。但第二种方式看起来像我期待的方式。谢谢! – 2013-05-13 15:59:21

+0

噢,这里有165个视频,在你的例子中,你可以浏览27个部分,我只有6个部分,每部分的视频数量是多种多样的。 – 2013-05-13 16:31:32