我有一段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
答案 0 :(得分:2)
我不喜欢这样的解决方案,因为在这种情况下您需要花费很多时间。
也许您应该考虑使用Expand-Archive
但是此行将起作用:
"100% . 4x4 Evo (USA).bin" | Select-String -Pattern "\d{1,3}%" -AllMatches | ForEach-Object { $_.Matches.Value }