如何在不创建新窗口的情况下从批处理文件中调用批处理文件?

问题描述 投票:0回答:1

我需要处理一些音频文件。每个文件都必须经过多个连续步骤,为此我编写了一个批处理文件。但我想要并行处理文件夹中的所有文件,以提高速度。所以我写了另一个批处理文件,它在一个循环中调用第一个。但是当我这样做时,我最终得到了多个命令窗口,即使批处理文件已关闭也会保持打开状态。

按照优先顺序,我怎样才能(a)根本不打开窗户,或者(b)将窗户最小化,然后在完成后关闭;或(c)打开窗户,完成后关闭。

for %%I in (*.mp3) DO (
    start convert-mp3-to-m4b.bat "%%I"
)

我已经设法用start cmd /c convert-mp3-to-m4b.bat "%%I" /B实现(c),但这更多的是运气而不是判断。

windows batch-file
1个回答
1
投票

在@Stephan的帮助下,我最终得到了这个:

for %%Z in (*.mp3) DO (
    start "converting-audio" /min cmd /c convert-mp3-to-m4b.bat "%%Z"
)

这会使窗口最小化,并在处理后关闭它们。我也很高兴max <n>技巧,虽然我不得不调整代码。如果它对其他人有帮助,我的脚本现在看起来像这样:

@echo off
setlocal enabledelayedexpansion
set count=0
set max=4
for %%Z in (*.mp3) DO (
    call :loop
    start "converting-audio" /min cmd /c convert-mp3-to-m4b.bat "%%Z"
)

goto :eof    

:loop
for /f "tokens=* USEBACKQ" %%G IN (`tasklist /fi "windowtitle eq converting-audio" ^| find "cmd.exe" /C`) do ( SET "count=%%G" )
if !count! GEQ !max! call :loop

这一次处理四个文件,并且工作得非常好。

© www.soinside.com 2019 - 2024. All rights reserved.