Пробовал много комбинаций с помощью этого скрипта для сжатия большого количества файлов в отдельные файлы с помощью 7zip, но я продолжаю получать ошибки.

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

Продолжает придумывать «Слишком длинный переключатель» или «Слишком короткий переключатель». Что тут происходит?

1
Jim Kieger 12 Фев 2021 в 00:14

1 ответ

Лучший ответ

У вашей команды есть две отдельные проблемы:

  • Вы неправильно встраиваете доступ к свойству $_.Name внутри "...": вы должны использовать "$($_.Name)+.7z" - обратите внимание на использование $(...), оператор подвыражения.

    • Вкратце: чтобы встроить выражения в расширяемую строку ("..."), вы должны заключить их в $(...). Примечательно, что это включает доступ к свойствам и индексированный доступ (например, $($var.property), $($var[0])). Только переменные в целом не требуют этого (например, $var, $env:USERNAME). Дополнительную информацию см. В этом ответе.
  • Ваши параметры предназначены для указания уровней анализа файлов и уровней сжатия , что означает, что они должны быть переданы как параметр аргументы в вариант -m.

    • Поэтому используйте -myx9 -mx9
3
mklement0 11 Фев 2021 в 22:01