【问题标题】:PowerShell command only works without spaces between argumentsPowerShell 命令仅适用于参数之间没有空格的情况
【发布时间】:2021-01-28 08:33:26
【问题描述】:

我尝试使用 PowerShell 使用 7zip 提取受密码保护的存档的某些源代码:

此命令不起作用(7zip 是 $7zipPath 的别名):

& 7zip x "$zipFile" -o "$output" -p $zipFilePassword

我得到这个错误: 命令行错误: 开关太短:

但是当我删除变量 -o 和 -p 之间的空格时,可以提取存档。这种行为让我对 git 等其他命令行工具感到困惑?为什么会这样?

【问题讨论】:

标签: powershell


【解决方案1】:

行为特定于 7-Zip (7z.exe),适用于您从中调用它的任何程序(shell):

与 CLI 观察到的广泛使用的约定不同,例如 git7z 要求即使是具有 强制 参数的开关(选项),例如 -o 和 @987654325 @,将参数直接附加到开关名称 - 不允许有空格:

& 7zip x $zipFile -o"$output" -p"$zipFilePassword"

请注意,您通常需要 not 将 PowerShell 中的变量引用括在 "..." 中(注意 $zipFile 不是这样),即使它们包含空格。但是,为了将它们直接附加到交换机名称,您可以这样做。

或者,您可以将整个标记 - 开关名称 参数 - 用双引号括起来:

& 7zip x $zipFile "-o$output" "-p$zipFilePassword"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 2012-09-16
    • 2022-11-06
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多