如何抑制7zip详细输出但提取状态百分比?

时间:2019-10-04 09:39:29

标签: python-3.x batch-file subprocess 7zip

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:)?

我发现了抑制冗长输出的几个答案,例如:

  1. 在bat命令的末尾添加>NUL:,这将完全禁止显示消息。
  2. 在Python中将subprocess.Popenstdout=PIPEstderr=PIPE一起使用,这再次禁止了所有消息。
  3. 在bat命令中使用findstr /b /r /c:"\<Everything is Ok",它将根据给定的字符串进行过滤。在这里,我尝试使用类似于\d+\%的正则表达式,但并没有真正的帮助。如您所见,我不擅长批处理脚本。任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

尝试使用以下方式管道输出:

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