PowerShell命令仅在参数之间没有空格的情况下工作
我尝试使用PowerShell的某些源代码使用7zip提取受密码保护的存档: 此命令无效(7zip是$7zipPath的别名): 我得到了这个错误的答案: 命令行错误: 开关太短:PowerShell命令仅在参数之间没有空格的情况下工作,powershell,Powershell,我尝试使用PowerShell的某些源代码使用7zip提取受密码保护的存档: 此命令无效(7zip是$7zipPath的别名): 我得到了这个错误的答案: 命令行错误: 开关太短: 但是当我删除变量-o和-p之间的空格时,可以提取归档文件。这种行为使我与其他命令行工具(如git等)混淆。?为什么会这样?该行为特定于7-Zip(7z.exe),并适用于您从中调用它的任何程序(shell): 与CLI遵守的广泛使用的约定(如git)不同,7z要求即使是具有强制参数的开关(选项),如-o和-p,也将参
但是当我删除变量-o和-p之间的空格时,可以提取归档文件。这种行为使我与其他命令行工具(如git等)混淆。?为什么会这样?该行为特定于7-Zip(
7z.exe
),并适用于您从中调用它的任何程序(shell):
与CLI遵守的广泛使用的约定(如git
)不同,7z
要求即使是具有强制参数的开关(选项),如-o
和-p
,也将参数直接附加到开关名称上,不允许使用空格:
& 7zip x $zipFile -o"$output" -p"$zipFilePassword"
请注意,通常不需要在PowerShell中的“…”
(请注意,$zipFile
中不包含变量引用),即使它们包含空格也是如此。但是,为了将它们直接附加到交换机名称,您需要这样做
或者,您可以将整个标记(开关名称和参数)用双引号括起来:
& 7zip x $zipFile "-o$output" "-p$zipFilePassword"
这回答了你的问题吗?如果你的问题还没有完全回答,请考虑回答或提供反馈。
& 7zip x $zipFile "-o$output" "-p$zipFilePassword"