7zip:如何提取到 std 输出?

7zip:如何提取到 std 输出?

我有 7z 4.65,正在尝试将单个文件提取到标准输出。7​​z 命令行帮助说-so是提取到标准输出的命令行参数,但是当我尝试这样做时:

>>> 7z e -so dist\dlogpkg.jar META-INF/MANIFEST.MF

7-Zip 4.65  Copyright (c) 1999-2009 Igor Pavlov  2009-02-03
Error:
I won't write data and program's messages to same terminal

我该如何修复这个问题?似乎没有命令行参数可以抑制正常的 7z 标准输出消息。

(编辑:“解压缩”中的等效操作是

unzip -p dist\dlogpkg.jar META-INF/MANIFEST.MF

效果很好。但出于各种原因,我更愿意使用 7z。)

答案1

通过管道传输到另一个程序,例如

  • 球座
  • 较少的
  • 更多的

我认为tee这最接近你想要的,它会删除 7z 内容并只提供内容。

% 7z e -so dist\dlogpkg.jar META-INF/MANIFEST.MF | tee

答案2

我也在想办法解决这个问题。我得到了我想要的东西:

7z x -so my_file.zip 2> /dev/null

答案3

在 Windows 上,7z x -so my_file.zip 2> NUL不起作用,但重定向到真实文件会有所帮助:

7z x -so my_file.zip 2> _garbage.txt

答案4

在 Win 10 上,为了避免 stdout 上出现 7z 内容,我使用选项 -bso0(参见 7z 帮助:-bs{o|e|p}{0|1|2}:设置输出/错误/进度线的输出流)

在 cmd.exe 批处理脚本中处理 7z 输出,适用于文本文件: for /f "usebackq tokens=*" %%a in ( 7z e -bso0 -so infile.7z fileToExtract.txt) do ( rem process %%a text line )

相关内容