Powershell 中的 7zip 一直显示 "Too long switch" 或 "Too short switch"

7zip in Powershell keeps saying "Too long switch" or "Too short switch"

使用此脚本尝试了很多组合,使用 7zip 将大量文件压缩成单个文件,但我总是出错。

Get-ChildItem *.smc | ForEach-Object { 7z a -yx9 -x9 "$_.Name+.7z" $_.Name }

不断提出“开关太长”或“开关太短”的问题。这是怎么回事?

您的命令有两个不同的问题:

  • 您在 "..." 中错误地嵌入了 属性 访问 $_.Name:您必须使用 "$($_.Name)+.7z" - 注意 [=13= 的使用], subexpression operator.

    • 简而言之:为了在可扩展字符串 ("...") 中嵌入 表达式 ,您必须将它们包含在 $(...) 中。值得注意的是,这包括 属性 和索引访问(例如,$($var.property)$($var[0]))。只有变量 作为一个整体 不需要这个(例如,$var$env:USERNAME)。有关详细信息,请参阅 this answer
  • 您的选项旨在指定文件分析级别压缩级别,这意味着它们必须作为选项 arguments 传递给 -m option.

    • 因此,使用-myx9 -mx9