“ -split”-“ stream”的输出?

时间:2018-09-17 13:33:36

标签: powershell 7zip

我有一段PS代码,它提取7-Zip提取输出并对其进行过滤,因此仅打印百分比“%”的进度更新行。

在百分比计数之后,控制台打印的某些行上还有其他内容(例如当前正在提取的文件)。

这些总是在.之后(空格,句号,另一个空格)。有什么办法可以减少.之后打印出来的字符串以删除所有内容?我似乎无法使用-split,因为它必须在管道的开始!

代码:

"Starting decompression of [$filePath]..."
& $7ZipPath "x" $filePath "-o$extractionPath" "-aos" "-bsp1" | out-string -stream | select-string %

示例输出:

  0%
  1%
  4%
  7%
 11%
 14%
 17%
 20%
 22%
 25%
 29%
 34%
 39%
 44%
 46%
 48%
 50%
 52%
 54%
 56%
 58%
 60%
 61%
 63%
 65%
 67%
 69%
 71%
 73%
 75%
 77%
 78% . 4x4 Evo (USA).bin
 79% . 4x4 Evo (USA).bin
 81% . 4x4 Evo (USA).bin
 82% . 4x4 Evo (USA).bin
 83% . 4x4 Evo (USA).bin
 84% . 4x4 Evo (USA).bin
 86% . 4x4 Evo (USA).bin
 87% . 4x4 Evo (USA).bin
 88% . 4x4 Evo (USA).bin
 89% . 4x4 Evo (USA).bin
 91% . 4x4 Evo (USA).bin
 92% . 4x4 Evo (USA).bin
 93% . 4x4 Evo (USA).bin
 94% . 4x4 Evo (USA).bin
 95% . 4x4 Evo (USA).bin
 97% . 4x4 Evo (USA).bin
 98% . 4x4 Evo (USA).bin
 99% . 4x4 Evo (USA).bin
100% . 4x4 Evo (USA).bin

1 个答案:

答案 0 :(得分:2)

我不喜欢这样的解决方案,因为在这种情况下您需要花费很多时间。 也许您应该考虑使用Expand-Archive

但是此行将起作用:

"100% . 4x4 Evo (USA).bin" | Select-String -Pattern "\d{1,3}%" -AllMatches | ForEach-Object { $_.Matches.Value }