2014-03-05 191 views
0

所以我正在做一些使用powershell使用命令組合的文件操作。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分鐘執行的巨大數據文件上。所以,我們希望看到某種「進度條或進度表」,這將使我能夠確定完成與待完成的程度。或者一些可以放在屏幕上的詳細信息?

寫入進度是我認爲會幫助我,但是,我如何解釋它更適合於「循環」。

任何指針表示讚賞。

回答

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 
} 

您很有可能需要調整以適應您的需求。

+0

哇。我從來沒有想過這可能是如此有用。我會明天嘗試並在此更新。謝謝@vasiliSyrakis – DataRiver