【问题标题】:Handling error whiile extracting files using 7 zip through powershell command使用 7 zip 通过 powershell 命令提取文件时处理错误
【发布时间】:2016-05-31 12:29:46
【问题描述】:

我正在尝试使用 7 zip 和 powershell 命令行提取文件。文件提取没有问题,但 7zip 引发错误(缺少卷:sample.ZIP)。我寻找 zip 文件,它仍然提取文件。我想抑制那个错误或者我想处理那个错误。

这不是非终止错误。我也尝试了以下方法。

try {
    $ExtractedFile = Get-ChildItem D:\test\ | % {& "C:\Program Files\7-Zip\7z" "e" D:\test\sample.z0004} -ErrorAction Stop
    write-host "ExtractedFile(s): $ExtractedFile"
} catch {
    Write-Host $error[0]
} finally {

要提取的文件名:sample.z0004

我得到错误:

缺少卷:sample.ZIP

谁能建议如何克服这个问题?

【问题讨论】:

    标签: powershell 7zip


    【解决方案1】:

    问题在于大量元数据存储在根 Zip 文件 (sample.zip) 中。您获取了存档的 1 部分,幸运的是,其中包含了您需要的整个文件,但其他存档可能是其他文件,您将无法提取任何内容。所以这个错误是完全有效的。如果您仍想抑制错误,可以使用$ErrorActionPreference 括起您的代码,并可选择添加Out-Null,如下所示:

       $ErrorActionPreference= 'silentlycontinue'
       $ExtractedFile = Get-ChildItem D:\test\ | % {& "C:\Program Files\7-Zip\7z" "e" D:\test\sample.z0004} 
       write-host "ExtractedFile(s): $ExtractedFile"
       $ErrorActionPreference= 'Stop'
    

    【讨论】:

    • 这没有做任何改变。另外,我使用了 -ErrorAction Continue/Stop/SilentlyContinue 但它显示“未知开关:-ErrorAction”
    • 我试过了,不是循环,而是单个文件,没有错误。而-ErrorAction 开关确实是不允许的。您可以删除最后一行,也许它会有所帮助,但是您根本不会在此脚本中看到任何错误
    猜你喜欢
    • 2017-08-17
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 2013-05-08
    • 2011-04-16
    • 1970-01-01
    相关资源
    最近更新 更多