1
希望有人可以提供一個建議來幫助我加速Powershell腳本。我正在做的是讀取數百個CSV文件,解析信息以獲取有關缺少條目的數據,然後將該輸出寫入HTML文件。這裏是循環,我使用處理的文件:解析多個CSV文件中的多個條目
ForEach ($Filename in $FileList) {
$CustTemp = import-csv "$FilePath\$Filename"
$CustName = $CustTemp[0].CustName
Write-Host "Reading data for $CustName"`r
For ($counter=0;$counter -lt 31;$counter++){
$CheckDate = (get-date).AddDays(-$counter)
$CheckShortDate = $CheckDate.ToShortDateString()
$TempData = import-csv "$FilePath\$Filename" | Select FileName,FileDate | where {$_.FileDate -eq $CheckShortDate}
If ($TempData -eq $null) {
$row = "No file found for $CheckShortDate for $CustName"
$HTMLReportItems += $row
}
$HTMLReportItems = $HTMLReportItems | ConvertTo-Html -Fragment
}
}
這個循環工作得很好,當我與幾個CSV文件測試,但對大量的文件(300+)運行時,它的循環是花費很長時間才能完成每個文件(30s-1m)。我很確定爲什麼CSV文件每次迭代訪問30次。我所希望的是,有人會對我如何處理數據有更好的建議。
謝謝你的建議。做出改變後,我仍然看到奇怪的行爲。每次迭代所花費的時間比下一個更長。下面是從我試運行的輸出與10個CSV文件: 開始時間:17點53分三十秒 閱讀:AB010時間:00.6093750 閱讀:ak007時間:01.7968750 閱讀:ak036時間:02.9218750 閱讀:az052時間: 04.1562500 閱讀:az106時間:05.2187500 閱讀:az141時間:06.4531250 閱讀:az159時間:07.6103516 閱讀:ca017時間:08.8593750 閱讀:ca051時間:10.0468750 閱讀:ca136時間:11.5166015 處理完成。 總時間:59.3300781秒 –
對不起,我的回覆格式不好。每次它讀取一個文件大約需要。 1秒。比以前的文件長。以這種方式對300多個文件進行迭代將花費太長時間才能實用。每個CSV包含約。 50行,所以我不相信每個的大小是一個因素。建議? –
@ W.J.P。查看更新的答案。 –