Как подавить многословный вывод 7zip, но статус извлечения в процентах? - PullRequest
0 голосов
/ 04 октября 2019

Пример вывода 7zip-извлечения выглядит так:


Scanning the drive for archives:
1 file, 9770776 bytes (9542 KiB)

Extracting archive: tools\StrawberryPerl.7.exe
--
Path = tools\StrawberryPerl.7.exe
Type = 7z
Offset = 162816
Physical Size = 9607960
Headers Size = 11687
Method = LZMA:24m BCJ2
Solid = +
Blocks = 2

 78% 602 - perl\lib\auto\Module\Pluggable\.packlistProcess SpawnPoolWorker-6:

Мой вопрос: как это можно подавить, чтобы получить только процент извлечения (78% 602 - perl\lib\auto\Module\Pluggable\.packlistProcess SpawnPoolWorker-6:)?

Iнашел несколько ответов на подавление подробного вывода, например:

  1. Добавление >NUL: в конец команды bat, что полностью подавит сообщения.
  2. Использование subprocess.Popen вPython с stdout=PIPE и stderr=PIPE, который снова подавляет все сообщения.
  3. Использование findstr /b /r /c:"\<Everything is Ok" в команде bat, которая будет отфильтровываться на основе заданной строки. Здесь я попытался использовать регулярные выражения, вроде \d+\%, но не помогло. Как вы видите, я не очень хорош в пакетном сценарии. Любое предложение будет оценено!

1 Ответ

1 голос
/ 04 октября 2019

Попробуйте передать вывод, используя:

[7z command] | findstr /rc:"[0-9][%]"
...