2011-07-28 219 views
1

得到一个包含自动生成的批处理脚本的文件夹。例如 - 一个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+"&"[email protected] /Q " 
call variable 

但在适当的批处理文件格式(我在CMD吸)。

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

+0

我已经尝试启动,但它不运行该批处理文件。 – rickyduck

回答

1

不是:

Cmd /C Call @file /Q 

使用:

Start Cmd.exe /Q /C @file 

Start开始的处理,并立即返回。

+0

感谢您的回应,不幸的是,启动时似乎无法在FORFILES中正确运行该文件。我沿着运行FORFILES的批处理中使用Start的路线,因此PHP为每个批处理文件插入了一个新行 – rickyduck

+0

我从未尝试过'ForFiles'。我一直使用'For'命令。我很高兴你有它的工作! –

1

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

+0

好吧,好吧,我通过运行所有批处理文件,并且使用大量start /path/to/batch.bat – rickyduck

1

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

假设你想搜索位于根文件夹中的文件夹batch_files的内容应该给出如下:

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

这为我工作。

相关问题