我在文本中有一个非常大的导出列表,我需要浏览每个条目并使用该条目运行命令。但我希望分批进行500次 - 因为我需要允许处理时间。
我不明白的是我如何遍历文本文件,但一次只运行一个有限的数字,然后等待一段时间,然后运行下一个块,直到它们全部完成。
有人可以帮我一个我可以应用到我的场景的例子吗?
答案 0 :(得分:0)
这可以通过模运算符%
:
$input = 1..101
for ($i = 0; $i -lt $input.Count; $i++)
{
$currentElement = $input[$i]
if ($i % 50 -eq 0)
{
Write-Host "Sleep on element $i"
Start-Sleep -Seconds 5
}
}
只要$i
可以除以50而没有余数,此循环将暂停5秒钟。
答案 1 :(得分:0)
我可能不会像在@ManuelBatsching的回答中那样使用for
循环,因为在PowerShell中你想要使用ForEach-Object
或其他一些流水线内容这么多次。但是,你仍然可以做同样的基本事情:
$i = 0;
$BatchSize = 500;
$SleepSeconds = 5;
Get-Content -Path $FileName | ForEach-Object {
$i++;
# Do work here
if ($i % $BatchSize -eq 0) {
Start-Sleep -Seconds $SleepSeconds;
}
}
您也可以执行以下操作并使用ReadCount
的{{1}}参数:
Get-Content