【问题标题】:Powershell - Using 7zip with ParametersPowershell - 使用带有参数的 7zip
【发布时间】:2015-02-02 16:47:57
【问题描述】:

我正在使用 Powershell(V4) 并且我正在按照代码给出 here,但是,当我运行代码时它给了我一个错误。

我的代码:

[string]$zipPath="C:\Users\someUser\7z.exe"
[string]$parameters= 'a', '-tzip','C:\Users\someUser\Desktop\Archive.zip','C:\Users\someUser\Desktop\Test'

Powershell 视图:

PS C:\Users\someUser> $zipPath="C:\Users\someUser\7z.exe" $parameters= 'a', '-tzip','C:\Users\someUser\Desktop\Archive.zip','C:\Users\someUser\Desktop\Test' & $zipPath $参数

& $zipPath $parameters

输出:

7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18


 Error:
 Incorrect command line

【问题讨论】:

    标签: powershell 7zip


    【解决方案1】:

    尝试使用Start-Process$parameters 作为-ArgumentList

    Start-Process $zipPath -ArgumentList $parameters -wait
    

    【讨论】:

    • 是的,效果也不错。谢谢。只是出于好奇,为什么没有按照示例显示的方式工作?
    • 如果您只是将它作为普通字符串使用,它应该可以工作,但我猜 & 不知道如何解析数组以获取程序参数,而 Start-Process 知道.
    【解决方案2】:

    将所有参数作为单个字符串传递,例如:

    2> $ec = 'echoargs'
    3> & $ec $parameters
    Arg 0 is <a -tzip C:\Users\someUser\Desktop\Archive.zip C:\Users\someUser\Desktop\Test>
    
    Command line:
    "C:\Users\hillr\Documents\WindowsPowerShell\Modules\Pscx\Apps\EchoArgs.exe"  "a -tzip C:\Users\someUser\Desktop\Archive.
    zip C:\Users\someUser\Desktop\Test"
    

    只要正常传递你的论点:

    4> & $ec a -tzip C:\Users\someUser\Desktop\Archive.zip C:\Users\someUser\Desktop\Test
    Arg 0 is <a>
    Arg 1 is <-tzip>
    Arg 2 is <C:\Users\someUser\Desktop\Archive.zip>
    Arg 3 is <C:\Users\someUser\Desktop\Test>
    
    Command line:
    "C:\Users\hillr\Documents\WindowsPowerShell\Modules\Pscx\Apps\EchoArgs.exe"  a -tzip C:\Users\someUser\Desktop\Archive.z
    ip C:\Users\someUser\Desktop\Test
    

    BTW echoargs 是来自PowerShell Community Extensions 的工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多