Захват и печать процесса извлечения 7-Zip в консоли PowerShell - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть сценарий PowerShell, который, среди прочего, извлекает файлы с помощью 7-Zip.

"Starting decompression of [$filePath]..."
& $7ZipPath "x" $filePath "-o$extractionPath" "-aos" | Out-Host

Я переключил Out-Host на Out-Null, так как это выглядит немного беспорядочноВ данный момент я пытаюсь достичь результата - я знаю, что если я добавлю -bsp1, я смогу получить прогресс извлечения - но он каждый раз вводит 7z и помещает каждый обновленный процент в отдельную строку и выглядит немного грязно.

У меня вопрос: есть ли способ зафиксировать процент выполнения -bps1 и распечатать его в консоли более компактным способом - либо индикатор выполнения, либо просто одна строка текста с процентом обновления?

1 Ответ

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

Мне удалось то, что я хотел, вот так:

"Extracting [$filePath]..."
& $7ZipPath "x" $filePath "-o$extractionPath" "-aos" "-bsp1" | out-string -stream | Select-String -Pattern "\d{1,3}%" -AllMatches | ForEach-Object { $_.Matches.Value } | foreach {
    [System.Console]::SetCursorPosition(0, [System.Console]::CursorTop) 
    Write-Host "Progress:" $_ -NoNewLine
}
...