Powershell中的7zip一直在说;“开关太长”;或;“开关太短”;

Powershell中的7zip一直在说;“开关太长”;或;“开关太短”;,powershell,7zip,Powershell,7zip,使用此脚本尝试了多种组合,使用7zip将大量文件压缩到单个文件中,但我不断遇到错误 Get-ChildItem *.smc | ForEach-Object { 7z a -yx9 -x9 "$_.Name+.7z" $_.Name } 不断地提出“开关太长”或“开关太短”。这里发生了什么?您的命令有两个不同的问题: 您在“…”中错误地嵌入了属性访问$.Name:您必须使用“$($.Name)+.7z”-请注意使用$(…) 简而言之:为了将表达式嵌入可扩展字符串(“…”

使用此脚本尝试了多种组合,使用7zip将大量文件压缩到单个文件中,但我不断遇到错误

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

不断地提出“开关太长”或“开关太短”。这里发生了什么?

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

  • 您在
    “…”
    中错误地嵌入了属性访问
    $.Name
    :您必须使用
    “$($.Name)+.7z”
    -请注意使用
    $(…)

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

    • 因此,请使用
      -myx9-mx9

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

  • 您在
    “…”
    中错误地嵌入了属性访问
    $.Name
    :您必须使用
    “$($.Name)+.7z”
    -请注意使用
    $(…)

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

    • 因此,请使用
      -myx9-mx9

它现在完全按照预期工作。很高兴听到它,吉姆。它现在完全按照预期工作。很高兴听到它,吉姆。