我有一段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
我不喜欢这样的解决方案,你管道很多。也许你应该考虑使用Expand-Archive
但这条线将起作用:
"100% . 4x4 Evo (USA).bin" | Select-String -Pattern "\d{1,3}%" -AllMatches | ForEach-Object { $_.Matches.Value }