添加PowerShell进度条可将执行时间增加x20倍

时间:2017-09-07 11:37:41

标签: powershell

我整理了一个小脚本来改变大文本文件(通常包含500K +行)。它工作得很好,完成操作所需的时间似乎是可以接受的......但后来我尝试添加进度条并在相对较小的文本文件(30K行)上进行测试。没有进度条和执行时间的执行时间分别约为14秒和289秒。

此脚本用于删除11到14长度之间的数字字符以外的所有内容,然后从剩余的字符中删除重复的行。

       $lines = Get-Content *.txt
$totalL = $lines.count
$i = 0
$lines | 
Where-Object {$_ -Match '\b([0-9]{11,14})\b'} | 
ForEach-Object {
    Write-Progress -PercentComplete (
       $i*100/$totalL) -Activity "Lines completed: $i/$totalL"  -Status 'Working'
    $_ -replace '.*(\b([0-9]{11,14})\b).*', '$1'
       $i++ } | 
sort | get-unique | 
Set-Content Final_Unique.txt

我是PowerShell的全新人物。我需要帮助来更好地优化这个noob脚本,并在保持进度条的同时将执行时间保持在最低限度。

0 个答案:

没有答案