[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
直接就写在一起啦 , 看得脑阔疼
  1. #Runspace最大数
  2. $MaxRunspaces = 10
  3. #Runspace池
  4. $RunspacePool = [runspacefactory]::CreateRunspacePool(1, $MaxRunspaces)
  5. $RunspacePool.Open()
  6. #任务
  7. $Worker = {
  8. param($Filename)
  9. if(test-path $Filename){
  10. $all = gc $Filename
  11. foreach($o in $all) { [console]::writeline($o)}
  12. $rt=0
  13. }else{
  14. $rt=-1
  15. }
  16. $rt
  17. }
  18. $Filenames = @("file1.txt", "file2.txt", "file3.txt", "file4.txt", "file5.txt", "file6.txt", "file7.txt", "file8.txt", "file9.txt", "file10.txt", "file11.txt")
  19. $jobs = @()
  20. #添加并执行任务
  21. foreach ($File in $Filenames) {
  22. $ps = [Powershell]::Create()
  23. $job = $ps.AddScript($Worker).AddArgument($File)
  24. $job.RunspacePool = $RunspacePool
  25. $jobs += New-Object PSObject -Property @{
  26. Job = $job
  27. PowerShell = $ps
  28. Result = $job.BeginInvoke()
  29. }
  30. }
  31. #判断任务是否完成
  32. do{
  33. Start-Sleep -Milliseconds 500
  34. $c = ($jobs | Where {$_.Result.IsCompleted -ne $true}).Count
  35. Write-Host ("未完成任务数" + $c) -ForegroundColor Green
  36. }while($c -gt 0)
  37. #获取返回结果并释放资源
  38. $i=1;foreach($j in $jobs){
  39. $r = $j.Job.EndInvoke($j.Result)
  40. write-host "任务 $i 返回值 : $r" -ForegroundColor Yellow
  41. $j.PowerShell.Dispose()
  42. $i+=1
  43. }
  44. cmd /c pause
复制代码
没啥特别需求可以用多进程的start-job

TOP

返回列表