Powershell сделал свое дело, как указано в ответе Quadruplebucky. Вот код, который я использовал. Вторая последняя строка ( ./xml2csv...
) - это сама работа. Остальная часть сценария может быть повторно использована для любых подобных задач.
# PARAMETERS $root = 'D:\Ratings' $folder = 'SP' # Import Invoke-Parallel .".\Invoke-Parallel.ps1" # Run in parallel Get-ChildItem ".\$folder-xml" -Filter *.xml | Invoke-Parallel -throttle 10 -runspaceTimeout 10 -ImportVariables ` -ScriptBlock { $file = $_.BaseName echo $file cd $root (./xml2csv $folder-xml\$file.xml $folder-csv\$file.csv fields-$folder.txt -Q) | out-null }
Некоторые заметки:
- Функцию Invoke-Parallel (aka cmdlet ) можно скачать здесь .
- Runspace - это то, что я бы назвал «экземпляром».
-runspaceTimeout
обеспечивает максимальное время работы для каждого экземпляра. -throttle
устанавливает максимальное количество одновременно работающих экземпляров.