"-split" -ing выход из "-stream"? - PullRequest
       8

"-split" -ing выход из "-stream"?

0 голосов
/ 17 сентября 2018

У меня есть фрагмент кода 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 голосов
/ 17 сентября 2018

Мне не нравятся такие решения, когда ты много пишешь.Возможно, вам стоит подумать об использовании Expand-Archive

Но эта строка будет работать:

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