2011-07-28 267 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 

這爲我工作。

相關問題