如何循环遍历文本文件(运行命令),批量为500

时间:2017-10-11 11:01:37

标签: powershell

我在文本中有一个非常大的导出列表,我需要浏览每个条目并使用该条目运行命令。但我希望分批进行500次 - 因为我需要允许处理时间。

我不明白的是我如何遍历文本文件,但一次只运行一个有限的数字,然后等待一段时间,然后运行下一个块,直到它们全部完成。

有人可以帮我一个我可以应用到我的场景的例子吗?

2 个答案:

答案 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