Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何在不创建新窗口的情况下从批处理文件调用批处理文件?_Windows_Batch File - Fatal编程技术网

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

Windows 如何在不创建新窗口的情况下从批处理文件调用批处理文件?,windows,batch-file,Windows,Batch File,我需要处理一些音频文件。每个文件都必须经过多个连续步骤,为此我编写了一个批处理文件。但是为了提高速度,我希望文件夹中的所有文件都能并行处理。所以我编写了另一个批处理文件,在循环中调用第一个批处理文件。但是当我这样做的时候,我最终得到了多个命令窗口,即使批处理文件已经关闭,这些窗口仍然保持打开状态 按照优先顺序,我如何(a)完全不打开车窗,或(b)最小化车窗,然后在完成后关闭车窗;或(c)打开窗户,完成后关闭 for %%I in (*.mp3) DO ( start convert-mp

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

按照优先顺序,我如何(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),但这更多的是运气,而不是判断。

在@Stephan的帮助下,我最终实现了以下目标:

for %%Z in (*.mp3) DO (
    start "converting-audio" /min cmd /c convert-mp3-to-m4b.bat "%%Z"
)
这将启动最小化窗口,并在处理后关闭它们。我也为
max
技巧感到高兴,尽管我不得不稍微修改一下代码。如果对其他人有帮助,我的脚本现在如下所示:

@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

这一次处理四个文件,效果很好。

您正在询问答案-使用
CALL
关键字:
CALL convert-mp3-to-m4b.bat“%%I”
还要检查bat是否使用直接退出命令,并将其更改为
EXIT/b
@npocmaka
CALL
不会并行运行进程…然后
启动“”/b convert-mp3-to-m4b.bat“%%I”
start/min
运行它们。注意:如果您的
.mp3
太多,您的计算机可能会耗尽资源。请参阅一次运行max
文件。看起来不错。我认为最好使用START/B,将stdout和stderr重定向到NUL,而不是START/MIN。