批次(運行命令)我在文本非常大的出口列表,我需要經過每個條目,並使用進入運行命令。但我希望分批次處理500個,因爲我需要處理時間。如何通過一個文本文件迴路500
我不明白的是我怎麼遍歷文本文件,但一次只能運行一個有限數量,然後等待一定的時間,跑下一個塊,直到他們都完成之前。
有人可以用一個例子,我可以申請我的方案幫助嗎?
批次(運行命令)我在文本非常大的出口列表,我需要經過每個條目,並使用進入運行命令。但我希望分批次處理500個,因爲我需要處理時間。如何通過一個文本文件迴路500
我不明白的是我怎麼遍歷文本文件,但一次只能運行一個有限數量,然後等待一定的時間,跑下一個塊,直到他們都完成之前。
有人可以用一個例子,我可以申請我的方案幫助嗎?
我可能不會在@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
參數Get-Content
:
$BatchSize = 500;
$SleepSeconds = 5;
Get-Content -Path $FileName -ReadCount $BatchSize | ForEach-Object {
$_ | ForEach-Object {
# Do work here
}
Start-Sleep -Seconds $SleepSeconds;
}
這可以例如進行與模運算%
的幫助下:
$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
}
}
此循環將暫停5秒鐘每當$i
可以通過50沒有除盡。
您好,感謝您的快速回復! :)。除以50的分數對我來說有點混亂,尤其是當文本文件中身份的總數不會是偶數時。這個想法是從10,003的第一位開始,到達9,950這個數字除以50--然後暫停?在進行到9,900暫停之後再進行9,850暫停等? – blop001
您可以使用您認爲適合您的情況的任何模數值。 50只是一個例子。您輸入的元素總數在這裏並不重要。您正在計算當前循環運行數的模數,而不是元素的總數。 –
非常感謝你 - 這對我來說更有意義,並且可以直接用於我的實際場景。這作爲睡眠觸發器「($ i%$ BatchSize -eq 0)」對我來說更有意義。謝謝!! – blop001