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

时间:2011-07-28 10:20:48

标签: loops batch-file

有一个包含自动生成的批处理脚本的文件夹。例如 - 一个cron作业运行一个脚本,从数据库中获取所有新行,cURLs到我的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)。

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

3 个答案:

答案 0 :(得分:1)

而不是:

Cmd /C Call @file /Q

使用:

Start Cmd.exe /Q /C @file

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

答案 1 :(得分:1)

你做不到。 START命令启动另一个进程并立即返回以执行批处理文件中的下一行IF并且仅在执行的进程是32位图形Windows应用程序时执行。如果不是,那就是CMD.EXE的情况,那么START等待执行的命令结束。

答案 2 :(得分:1)

上述答案的组合应有所帮助。

假设您要搜索位于根文件夹中的文件夹batch_files的内容,则会提供以下内容:

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

这对我有用。