如何禁用7-Zip的输出?


34

我使用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

是否可以禁用此输出(即,我不想打印任何内容)?

Answers:




12

强烈建议您在此过程中查看状态消息。为避免长消息,仅显示确认:

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

感谢您的findstr解决方案!看起来您可以通过省略搜索字符串中/b\r和或两者都可以稍微缩短该调用时间\<。我会选择findstr /b /c:"Everything is Ok" /c:"Scanning" /c:"Creating archive"因为您/r在这里不需要正则表达式(该选项)- /b仅在字符串的开头搜索。
奥利弗

如果要使用状态消息检查命令是否成功,则最好使用返回码(0对于成功代码和其他详细说明失败内容的代码)。在脚本中,基于这些值进行决策比基于消息进行决策更容易。
WoJ

1
好答案。我去... | findstr /v /b /c:"Compressing "摆脱了文件列表,但保留其他状态消息。
Duncan Smart

5

为了改善Bruno Dermario的答案,我还想报告错误并能够手动检查它们。

...\right_path\7z a output_file_name.zip file_to_be_compressed > 7z_log.txt
type 7z_log.txt | findstr /b /c:"Everything is Ok" /c:"Scanning" /c:"Creating archive" /c:"Error"
echo.
echo (In case of Error check 7z_log.txt)
echo.

2

如果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格式输出进行了测试。其他存档格式可能会产生“压缩”以外的其他消息。提取也可能会产生不同的消息。但是,您可以轻松地根据需要调整过滤器。

更复杂的想法是将所有输出重定向到缓冲区,并仅在命令返回错误退出代码的情况下才打印它。此方法可与所有允许重定向并提供准确的错误退出代码的命令一起使用。


1

分享我的findstr解决方案:

%ZIP% a -tzip %FILE% %Folder% | findstr /I "archive everything"

因此,原始的14行输出为:


7-Zip 18.01 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2018-01-28

Scanning the drive:
4 folders, 13 files, 88957 bytes (87 KiB)

Creating archive: Releases\Archive.zip

Add new data to archive: 4 folders, 13 files, 88957 bytes (87 KiB)


Files read from disk: 13
Archive size: 33913 bytes (34 KiB)
Everything is Ok

缩小到4行:

Creating archive: Releases\Archive.zip
Add new data to archive: 4 folders, 13 files, 88957 bytes (87 KiB)
Archive size: 33912 bytes (34 KiB)
Everything is Ok

它只会缩小sOut,警告和错误会转到sErr,因此您仍然会看到它们

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.