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

问题描述 投票:0回答:1

我有一段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
powershell 7zip
1个回答
2
投票

我不喜欢这样的解决方案,你管道很多。也许你应该考虑使用Expand-Archive

但这条线将起作用:

"100% . 4x4 Evo (USA).bin" | Select-String -Pattern "\d{1,3}%" -AllMatches | ForEach-Object { $_.Matches.Value }
© www.soinside.com 2019 - 2024. All rights reserved.