Unl*_*me9 6 powershell 7zip pipe
我有一段 PS 代码,它获取 7-Zip 提取输出并将其过滤下来,以便仅打印百分比“%”进度更新行。我已经设法将其减少到仅百分比输出:
& $7ZipPath "x" $filePath "-o$extractionPath" "-aos" "-bsp1" | out-string -stream | Select-String -Pattern "\d{1,3}%" -AllMatches | ForEach-Object { $_.Matches.Value } | Write-Host -NoNewLine
Run Code Online (Sandbox Code Playgroud)
目前控制台输出如下所示:
0%1%5%9%14%17%20%23%26%31%37%43%46%48%50%52%54%56%59%61%63%65%67%70%72%74%76%78%80%81%82%83%85%86%87%89%90%91%92%94%95%96%97%98%99%
有没有办法将这些输出保持在同一行的同一位置,使它们相互覆盖?这很棘手,因为输出是从 7-Zip 应用程序通过管道传输的。恐怕我无法使用,Expand-Archive因为我正在处理.7z文件
非常感谢!
您可以使用 .NetSystem.Console类:
[System.Console]::SetCursorPosition(0, [System.Console]::CursorTop)
Run Code Online (Sandbox Code Playgroud)
所以你的代码必须是:
& $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 $_ -NoNewLine
}
Run Code Online (Sandbox Code Playgroud)
注意:只要下一个输出等于或大于您的情况,这就是您所需要的。否则,您必须先清除最后的输出。
| 归档时间: |
|
| 查看次数: |
2086 次 |
| 最近记录: |