Loops 一次从另一个批处理文件运行文件夹中的所有批处理文件

Loops 一次从另一个批处理文件运行文件夹中的所有批处理文件,loops,batch-file,Loops,Batch File,已获取包含自动生成的批处理脚本的文件夹。例如,cron作业运行脚本,从数据库获取所有新行,卷曲到我的windows服务器,将批处理文件写入具有特定ID的文件夹 然后我有一个辅助批处理文件,我需要一次运行所有这些批处理文件,而不是按顺序运行。原因是在任何时候,文件夹中都可能有100个批处理脚本,每个脚本平均需要3分钟,即5个小时,而测试表明所有100个脚本都可以同时正常运行,只需要5分钟 到目前为止,我已经: FORFILES /S /P "./batch_files" /M *.bat /C "

已获取包含自动生成的批处理脚本的文件夹。例如,cron作业运行脚本,从数据库获取所有新行,卷曲到我的windows服务器,将批处理文件写入具有特定ID的文件夹

然后我有一个辅助批处理文件,我需要一次运行所有这些批处理文件,而不是按顺序运行。原因是在任何时候,文件夹中都可能有100个批处理脚本,每个脚本平均需要3分钟,即5个小时,而测试表明所有100个脚本都可以同时正常运行,只需要5分钟

到目前为止,我已经:

FORFILES /S /P "./batch_files" /M *.bat /C "cmd /c call @file /Q "
它会循环遍历所有文件,但只按顺序运行它们。我在考虑将每个文件名分配给一个变量,并使用“&”运算符,这样基本上

FORFILES /S /P "./batch_files" /M *.bat /C "cmd /c variable = variable+"&"+@fname /Q "
call variable
但是在正确的批处理文件格式中(我在CMD上很差劲)

另外,我不知道“variable”是否是全局的,因为它在每个forfiles上运行一个单独的cmd实例?

而不是:

Cmd /C Call @file /Q
使用:


Start
开始一个过程并立即返回。

您不能。当且仅当执行的进程是32位图形Windows应用程序时,START命令启动另一个进程并立即返回以执行批处理文件中的下一行。如果不是,则是CMD.EXE的情况,然后START将等待执行的命令结束。

以上答案的组合应该会有所帮助

假设您要搜索位于根文件夹中的文件夹
批处理文件
的内容,将给出以下信息:

FORFILES /S /P "\batch_files" /M *.bat /C "cmd /C start call @file"
EXIT /B

这对我很有效。

我尝试过start,但它没有运行批处理文件。感谢您的响应,很遗憾,start在FORFILES中使用时似乎没有正确运行文件。我在运行FORFILES的批处理中使用Start,因此PHP为每个批处理文件插入了一行新行,我从未尝试过FORFILES。我一直使用
For
命令。我很高兴你让它工作了!啊,好吧,我通过一次运行所有批处理文件和一个巨大的start/path/to/batch.bat列表对其进行排序
FORFILES /S /P "\batch_files" /M *.bat /C "cmd /C start call @file"
EXIT /B