我正在使用下面的powershell腳本來讀取和處理一個17 MB的文本文件。輸入文件包含大約200 000行和12列。目前該腳本需要將近1小時才能處理輸入文件。如何優化處理時間?使用powershell的文本文件處理 - 性能問題
腳本:
$fields = Get-Content Temp.txt
$results = @()
foreach($i in $fields)
{
$field = $i -split '\t' -replace '^\s*|\s*$'
$field1 = $field[0]
$field2 = $field[1]
$field3 = $field[2]
$field4 = $field[3]
$field5 = $field[4]
$field6 = $field[5]
$field7 = $field[6]
$field8 = $field[7]
$field9 = $field[8]
$field10 = $field[9]
$field11 = $field[10]
$field12 = $field[11]
if ($field1 -eq "4803" -and $field[2].substring(0,2) -eq "60")
{
$field2 = "5000000"
}
else
{
$field2 = $field[1]
}
$details = @{
Column1 = $field1
Column2 = $field2
Column3 = $field3
Column4 = $field4
Column5 = $field5
Column6 = $field6
Column7 = $field7
Column8 = $field8
Column9 = $field9
Column10 = $field10
Column11 = $field11
Column12 = $field12
}
$results += New-Object PSObject -Property $details
}
$results | ForEach-Object { '{0} {1} ... {11}' -f $_.Column1,$_. Column1,... $_.Column12 } | Set-Content -path Temp.txt
[Environment]::Exit(0)
好吧,你爲什麼不開始導入這個作爲csv? 「else」條件也是多餘的。你能提供適當的文件進行測試嗎?你可以用一些東西替換所有的信息 – 4c74356b41
我也用import-csv進行了測試。我面臨同樣的問題。它運行1小時。但處理10000條記錄只需要20秒。 – AravindhK
重複[https://social.technet.microsoft.com/Forums/scriptcenter/en-US/c5bdc740-837a-43f6-97d5-b0f0d5bf22bc/](https://social.technet.microsoft.com/Forums/腳本中心/ EN-US/c5bdc740-837a-43f6-97d5-b0f0d5bf22bc /)。 StackOverflow也不是免費的代碼重新設計服務。 –