我用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 格式输出的测试。其他存档格式可能会产生除“正在压缩”之外的其他消息。提取也可能会产生不同的消息。但您可以轻松地根据需要调整过滤器。
一个更复杂的想法是将所有输出重定向到缓冲区,并且仅在命令返回错误退出代码时才打印。这种方法适用于所有允许重定向并提供准确错误退出代码的命令。