创建一个批处理文件以合并两个具有“相似名称”和相同扩展名的文件[Windows]

杰西·威尔逊(Jessie Wilson)

我目前正在尝试获取文件:

example.mkv           // This is the source with audio/subs
example-Encoded.mkv   // This is video only/encoded source

并设置一个脚本。我已经制作了一个成功的脚本,但是在拉出前两个脚本之后,它尝试拉更多的脚本,虽然确实完成了remux的操作,但它却抛出了错误,因为它正在查找名为以下文件的版本example-Encoded-Encode.mkv

这是我正在使用的脚本:

mkdir MUXED

FOR %%a IN ("*.mkv") DO ffmpeg -i "%%a" -i "%%~na-Encoded.mkv" ^
-map 1:v:0 c:v:0 copy -disposition:v:0 default -metadata:s:v:0 title="Example" ^
-map 0:a:0 -c:a:0 copy -disposition:a:0 default -metadata:s:a:0 title="DD 2.0" ^
-map 0:a:1 -c:a:1 copy -metadata:s:s:0 title="Commentary" ^
-map 0:s:0 -c:s:0 copy -metadata:s:s:0 title="English (SRT)" ^
-map 0:s:1 -c:s:1 copy -metadata:s:s:1 title="English (VobSub)" ^
"MUXED\%%~na.mkv"

pause

我可以通过将编码后的文件转换为mp4容器来做相同的文件名,因为它们只是编码后的视频。但是,我觉得有一种方法可以正确执行此操作,而无需先更换容器!

不是我

仅对*-Encoded.mkv您的for循环中的文件尝试以下清单

@echo off && setlocal enabledelayedexpansion

cd/d "%~dp0" & set "_x=-Encoded" && 2>nul mkdir .\MUXED

for /f tokens^=* %%i in ('dir /b /on /a:-d "*!_x!.mkv"
')do set "_i=%%~nxi!" && cmd.exe /v:on /c ffmpeg.exe -i "!_i:%_x%=!" -i "%%~nxi" ^
-map 1:v:0 -c:v:0 copy -disposition:v:0 default -metadata:s:v:0 title="Example" ^
-map 0:a:0 -c:a:0 copy -disposition:a:0 default -metadata:s:a:0 title="DD 2.0" ^
-map 0:s:1 -c:s:1 copy -metadata:s:s:1 title="English (VobSub)" ^
-map 0:s:0 -c:s:0 copy -metadata:s:s:0 title="English (SRT)" ^
-map 0:a:1 -c:a:1 copy -metadata:s:s:0 title="Commentary" ^
".\MUXED\%%~ni.mkv" -hide_banner -v error -stats 

%__APPDIR__%timeout.exe -1 & endlocal

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有两个条件和一个循环的批处理文件

批处理:保存具有相同扩展名但在另一个目录中的多个文件

如果使用批处理文件已经存在一个具有相同名称的文件夹,则创建编号文件夹

生成具有相同唯一 id 的具有不同扩展名的两个文件

一个批处理文件中有两个命令?

批处理脚本将具有相同扩展名的文件移动到另一个目录的父子路径上

使用批处理文件删除文件夹中除一个扩展名(例如.idf)以外的所有文件

在Windows中,一个具有递归for循环的批处理文件,其文件名包括空格

.tar.gz文件具有两个扩展名而不是一个扩展名的原因是什么?

使用角度我想通过输入仅一个输入两个名称相同但文件扩展名不同的文件

将 2 个具有不同扩展名的相似文件重命名为第一个文件,但保留扩展名

Sitecore-在zip文件中上传两个名称相同但扩展名不同的文件

for循环跨多个文件调用两个不同的文件(相同的名称,不同的扩展名)

两个具有相同名称的应用程序-仅更改一个.C文件名?

使用批处理文件以相同的扩展名顺序重命名所有文件

如何创建一个批处理文件,该批处理文件创建一个批处理文件,该批处理文件创建一个批处理文件

打印带有另一个扩展名的文件名(批处理程序)

如何创建一个以txt输出文件名的批处理文件?

具有两个可变日期的批处理文件

使用批处理基于一个扩展名制作重复文件

为什么批处理文件没有将两个文件连接成一个新文件?

批处理文件合并两个文本文件

将所有相同扩展名的文件移动到一个文件夹

我的一个文件夹中的两个文件如何具有相同的名称?

bash中的for循环通过具有两个特定扩展名的文件

搜索包含两个具有任何扩展名的文件的目录

是否可以拆分文件并将具有相同扩展名的片段附加到一个衬纸中?

如何将两个不同扩展名的不同目录的合并文件复制到一个目录中并删除重复的文件

从终端删除具有特定扩展名的文件,但一个文件除外