用于并行执行 n 个其他批处理文件的 Windows 批处理文件

标签 windows multithreading batch-file ffmpeg

我使用 ffmpeg 转换视频文件。我编码的编解码器是单线程的。有很多视频文件需要转换,所以我可以简单地用 1 个线程对多个视频文件进行编码,而不是使用多线程编码。

为了自动化编码,我在 .bat 中使用以下命令:

SET maindir=%~dp0
FOR /r /d %%f in (*) do pushd "%%f" & Call %maindir%convert-with-ffmpeg.bat & popd

这会依次调用“convert-with-ffmpeg.bat”来转换主目录中的每个文件/文件夹。

如果我想并行执行此操作(例如 12 次)直到没有更多文件夹需要处理,我的 .bat 文件应该是什么样子?

编辑:让我明确一点,我想将运行进程的数量限制为 12。当 .bat 完成后,我希望主 .bat 启动一个新进程,直到所有文件都被转换(100+)。

最佳答案

使用 start 而不是 call。它不会等待其他 .bat 文件完成:

SET maindir=%~dp0
FOR /r /d %%f in (*) do pushd "%%f" & start %maindir%convert-with-ffmpeg.bat & popd

关于用于并行执行 n 个其他批处理文件的 Windows 批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34221905/

相关文章:

xml - 批量更新xml文件

windows - Windows 7 上的 Python 3.4 中的 curses 需要什么?

windows - 无法在 IntelliJ IDEA 中创建 .go 文件

c++ - QThreadPool 是否有序地调度它的线程?

java - 使用 java 通过 .bat 运行 busybox

batch-file - 递归搜索子文件夹并删除子文件夹中超过6个月的所有文件

windows - git添加错误: Could not open directory: Permission Denied

windows - 我应该如何正确使用 Git 进行 Visual FoxPro 开发?

c# - 为什么这个 Parallel.ForEach 代码会卡住程序?

c# - 锁定代码区域的正确方法是什么