Вы не понимаете, как работает оператор формата .Вам нужна строка формата с заполнителем ({0}
), чтобы этот оператор работал.Я бы также порекомендовал поместить скобки вокруг этого выражения, хотя в этом случае это не требуется.Просто чтобы быть в безопасности.
('foo {0} bar' -f $some_var) + $other_var
С учетом сказанного вы, очевидно, хотите добавить значение переменной счетчика к фрагменту из исходного имени файла, а не использовать этот фрагмент в качестве строки формата.Для этого вы можете просто объединить счетчик с фрагментом, как вы делаете это с расширением.
Чтобы счетчик работал правильно, вам также необходимо указать правильную область действия.То, как вы его используете, определяет новую переменную $counter
в локальной области видимости блока скриптов каждый раз, когда файл переименовывается, поэтому переменная $counter
в родительской области действия никогда не увеличивается.Используйте модификатор области script:
или global:
, чтобы получить переменную, которую вы на самом деле намереваетесь использовать.
$count = 1
Get-ChildItem * |
Rename-Item -NewName { $_.BaseName.Split('-')[0] + $script:count++ + $_.Extension }
Если вы хотите использовать оператор форматирования вместо конкатенации строк (+
), вы 'буду использовать это так:
$count = 1
Get-ChildItem * |
Rename-Item -NewName { '{0}{1}{2}' -f $_.BaseName.Split('-')[0], $script:count++, $_.Extension }