我使用 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/