循环遍历 Windows 文件夹中的文件名并将每个名称发送到 ffmpeg 命令

dad*_*vil 3 cygwin ffmpeg batch-file

在Windows中,我想创建一个批处理文件,给定一个特定目录将循环遍历所有文件名并将它们传递给一个命令,在我的例子中是ffmpeg。我发现了两三个使用 ffmpeg 循环遍历文件夹的例子,但它们都是在 Linux 中。目前我使用 python 脚本来执行此操作:

import os
import subprocess

sourcedir = "G:\Animation\Anime\OnePiece\Episodes\Main"
outputdir = "G:\Animation\Anime\OnePiece\Episodes\Converted"

for file in os.listdir(sourcedir):
    name = file[:file.rfind(".")]
    subprocess.call("ffmpeg -i " + sourcedir + "\\" + name + ".mkv -s 640x480 -map 0 -vcodec libx265 "+ outputdir + "\\" + name + ".mkv")
Run Code Online (Sandbox Code Playgroud)

即使直接通过 Windows 批处理文件而不是通过 Python 运行它可以将视频编码所需的时间减少 10 秒,但实际上它会节省我几个小时。

想一想,在 Cygwin 上使用 bash 命令会更好吗?

Squ*_*man 5

这应该会让你接近。我不太理解 ffmpeg 的语法。

 @echo off
 set "sourcedir=G:\Animation\Anime\OnePiece\Episodes\Main"
 set "outputdir=G:\Animation\Anime\OnePiece\Episodes\Converted"

 PUSHD "%sourcedir%"

 for %%F in (*.mkv) DO ffmpeg -i "%%F" -s 640x480 -map 0 -vcodec libx265 "%outputdir%\%%F"

 POPD
Run Code Online (Sandbox Code Playgroud)