我有一个PowerShell脚本,其他东西,使用7-Zip提取文件。
"Starting decompression of [$filePath]..."
& $7ZipPath "x" $filePath "-o$extractionPath" "-aos" | Out-Host
我一直在将Out-Host
切换到Out-Null
,因为它看起来有点凌乱,我现在想要实现的目标 - 我知道如果我添加-bsp1
我可以获得提取进度 - 但它每次引入7z并将每个更新的百分比放在一条单独的线,看起来有点乱。
我的问题是:有没有办法捕获-bps1
的进度百分比,并以更紧凑的方式在控制台中打印 - 进度条还是只有一行文本和更新百分比?
我管理了我想要的东西:
"Extracting [$filePath]..."
& $7ZipPath "x" $filePath "-o$extractionPath" "-aos" "-bsp1" | out-string -stream | Select-String -Pattern "\d{1,3}%" -AllMatches | ForEach-Object { $_.Matches.Value } | foreach {
[System.Console]::SetCursorPosition(0, [System.Console]::CursorTop)
Write-Host "Progress:" $_ -NoNewLine
}