Batch file FFmpeg-检查文件夹是否包含具有2个不同扩展名的匹配文件名,并忽略这两个文件。仅处理扩展名为1的文件名
我需要批量转换一个文件夹中的所有mkv文件递归到mp4 如果文件名存在并且与两个扩展名都匹配,则忽略这两个文件并仅处理包含mkv的文件名,而不处理与mp4匹配的文件名 示例:Batch file FFmpeg-检查文件夹是否包含具有2个不同扩展名的匹配文件名,并忽略这两个文件。仅处理扩展名为1的文件名,batch-file,type-conversion,Batch File,Type Conversion,我需要批量转换一个文件夹中的所有mkv文件递归到mp4 如果文件名存在并且与两个扩展名都匹配,则忽略这两个文件并仅处理包含mkv的文件名,而不处理与mp4匹配的文件名 示例:cat.mkv存在于带有cat.mp4=忽略这两个文件的文件夹中 示例:cat.mkv存在于文件夹中,并且cat.mp4不=处理cat.mkv到cat.mp4 我包含了一个不太好用的脚本。它处理所有mkv文件和mp4文件。mp4文件会抛出一个错误,因为FFmpeg不会以这种方式在其自身上编码相同的格式 一如既往地感谢任何有一
cat.mkv
存在于带有cat.mp4
=忽略这两个文件的文件夹中
示例:cat.mkv
存在于文件夹中,并且cat.mp4
不=处理cat.mkv
到cat.mp4
我包含了一个不太好用的脚本。它处理所有mkv文件和mp4文件。mp4文件会抛出一个错误,因为FFmpeg不会以这种方式在其自身上编码相同的格式
一如既往地感谢任何有一些想法的人
更新:我可能已经让它工作了。我改变了一些原来的东西。如果有人成功或有改进的想法,我洗耳恭听。谢谢
版本2
@ECHO ON
SETLOCAL
PROMPT $G
COLOR 0A
REM Set FFmpeg.exe location if not in system PATH already
SET FF=C:\MAB\local64\bin-video\ffmpeg.exe
REM Set MKV files root folder to recursively search
SET "mkvPATH=C:\Encoding\1_Original\Test\"
REM Change into mkvPATH DIR
CD "C:\Encoding\1_Original\Test"
REM Set temp file name
SET TEMPFILE=convert_mkv.bat
REM Create empty convert file
COPY NUL "%TEMPFILE%" >NUL 2>&1
REM ADD @ECHO OFF to top of blank convert_mkv.bat script
ECHO @ECHO OFF >>"%TEMPFILE%"
REM Recursively search MKV root folder
FOR /R "%mkvPATH%" %%G IN (*.mkv *.mp4) DO (
SET "GPATH=%%~fG"
SET "GNAME=%%~nG"
SETLOCAL ENABLEDELAYEDEXPANSION
REM Ignore all files that have both
REM extensions ".mkv" and ".mp4" in the file name
IF "%%~nG.mkv"=="%%~nG.mkv" (
IF NOT EXIST "%%~nG.mp4" (
CALL :DO_FFmpeg "!GPATH!"
IF "%%~nG.mkv"=="%%~nG.mkv" (
IF EXIST "%%~nG.mp4" (
ECHO(>>"%TEMPFILE%"
) ELSE ENDLOCAL
)
)
)
)
GOTO END
REM CALL variables for use in FFmpeg's command line
:DO_FFmpeg
IF "%~1"=="" GOTO :END
FOR %%I IN ("%~1") DO (
SET "FOLDER=%%~dpI"
SET "NAME=%%~nxI"
)
REM Export info to "%TEMPFILE% and RUN ffmpeg.exe's command line in the cmd.exe window
ECHO %FF% -y -i "%~1" -ss 0 -t 300 -codec copy "%FOLDER%%~n1.mp4">>"%TEMPFILE%" && %FF% | %FF% -y -i "%~1" -ss 600 -t 30 -codec copy "%FOLDER%%~n1.mp4"
:END
PAUSE
EXIT /B
对于%%G in(“*.mkv”)如果不存在请执行“%%~nG.mp4”echo执行某些操作…
?非常简单,我认为使用其他代码可以很好地工作。如果我想出什么办法,我会让你知道的。我认为我的第二次修订现在也可以了。