如何禁用 7-Zip 的输出?

如何禁用 7-Zip 的输出?

我用7-Zip像这样压缩批处理文件中的文件:

...\right_path\7z a output_file_name.zip file_to_be_compressed

我得到了以下输出:

7-Zip 4.65  Copyright (c) 1999-2009 Igor Pavlov  2009-02-03
Scanning

Creating archive output_file_name.zip

Compressing  file_to_be_compressed

Everything is Ok

是否可以禁用这个输出(也就是说,我不想打印任何内容)?

答案1

只需添加> NUL:到命令末尾即可。

答案2

您可以使用-bs命令来控制输出的位置。要停止除错误输出之外的任何输出,我会添加-bso0 -bsp0

答案3

强烈建议查看过程中的状态消息。为避免出现长消息,请仅显示确认信息:

...\right_path\7z a output_file_name.zip file_to_be_compressed | findstr /b /r /c:"\<Everything is Ok" /c:"\<Scanning" /c:"\<Creating archive"

答案4

如果 PowerShell 是一个选项或者有人可以使用它,那么根据答案的想法,这就是我所做的findstr

& $sevenZipBin a "$archiveFile" * | where {
    $_ -notmatch "^7-Zip " -and `
    $_ -notmatch "^Scanning$" -and `
    $_ -notmatch "^Creating archive " -and `
    $_ -notmatch "^\s*$" -and `
    $_ -notmatch "^Compressing "
}
if (-not $?)
{
    # Show some error message and possibly exit
}

在正常操作中,这只会留下“一切正常”行。如果打印了任何异常,它仍然可见(除了空行,因为它们在常规输出中经常出现)。

这是针对 7z 格式输出的测试。其他存档格式可能会产生除“正在压缩”之外的其他消息。提取也可能会产生不同的消息。但您可以轻松地根据需要调整过滤器。

一个更复杂的想法是将所有输出重定向到缓冲区,并且仅在命令返回错误退出代码时才打印。这种方法适用于所有允许重定向并提供准确错误退出代码的命令。

相关内容