powershell命令执行进度?

时间:2014-03-05 00:00:40

标签: powershell progress-bar

所以我正在使用powershell使用命令组合进行一些文件操作。

例如:

import-csv $DataFile -Delimiter "`t" | ConvertTo-Csv -Delimiter '|' -NoTypeInformation | % { $_ -replace '"', ""} | out-file $PipeFile
(get-content $DataFile -ReadCount 1000) -replace '\x00','' | set-content $DataFile

以及更多文件操作。

这些操作发生在需要40-60分钟才能执行的大型数据文件上。因此,我们希望看到某种“进度条或进度表”,这样我就可以确定已完成和未完成的数量。或者可以放在屏幕上的详细信息?

写作进步是我认为可以帮助我的东西,但是,我如何解释它更适合“循环”。

任何指针都表示赞赏。

1 个答案:

答案 0 :(得分:0)

Write-Progress更适合循环,但您仍然可以使用它。

我刚刚尝试编辑您的代码,以便它使用foreach循环来写出进度。

您必须在安全的环境中进行测试。

# Grabbing pipe data
# ------------------

$PipeData = Import-CSV $DataFile -delim "`t" | ConvertTo-Csv -delim '|' -notype

ForEach ($line in $PipeData)
{
    $New_PipeData += $line -replace '"', ""
    Write-Progress `
      -id 1 `
      -Activity "Creating New Pipe Data" `
      -Status "Converting..." `
      -PercentComplete ($progress/100))
    $progress += $line.length
}

$New_PipeData | Out-File $PipeFile

# Writing out to data file
# ------------------------

ForEach ($block in ((gc $DataFile -ReadCount 1000) -replace '\x00',''))
{
    $block | set-content $DataFile
    Write-Progress `
      -id 2 `
      -Activity "Outputting blocks" `
      -Status "Writing..." `
      -PercentComplete ($progress/100)
    $progress += $block.length
}

您很有可能需要调整它以满足您的需求。