пакетное переименование файлов с помощью powershell

#windows #powershell #batch-rename #rename-item-cmdlet

#Windows #powershell #пакетное переименование #переименовать-элемент-командлет

Вопрос:

Я могу пакетно переименовывать файлы в рабочем каталоге, используя:

 Dir | %{Rename-Item $_ -NewName ("0{0}.wav" -f $nr  )}
 

Однако я хочу, чтобы переименование файла начиналось с чего-то отличного от нуля. Скажите 0500 и переименуйте последовательно по порядку.

 Dir | %{Rename-Item $_ -NewName ("0{500}.wav" -f $nr  )}
 

возвращает ошибку.

Как я могу указать переименовывать, чтобы оно начиналось с числа, отличного от 0?

Комментарии:

1. просто инициализируйте счетчик начальным номером, например $nr = 500 . Кроме того, просто делая Dir это, вы играете с огнем, потому что это даст вам все файлы и папки в текущем каталоге. Лучше добавьте путь, фильтр файлов и -File переключатель, чтобы он только переименовывался. wav-файлы: (Get-ChildItem -Path '<TheFolder>' -Filter '*.wav' -File)

2. добавление $nr = 500 в начале также возвращает ошибку. Я не против делать все, Dir так как я знаю, что находится в рабочем каталоге, и запускаю его только тогда, когда мне это нужно. Добавление пути к файлу иногда может быть длинным и громоздким

Ответ №1:

Вы можете заранее инициализировать счетчик на 500. Кроме того, для этого вам не нужно использовать цикл ForEach-Object ( % ), потому NewName что параметр может принимать scriptblock .

Важно здесь то, что вам нужно поместить Get-ChildItem часть в квадратные скобки, чтобы завершить ее перед переименованием элементов, в противном случае вы можете попытаться переименовать файлы, которые уже были переименованы.

 $nr = 500
(Get-ChildItem -Path 'D:Test' -Filter '*.wav' -File) | Rename-Item -NewName { '{0:D4}{1}' -f ($script:nr  ), $_.Extension }
 

Комментарии:

1. хорошо, я подумал, что цикл избавит от необходимости беспокоиться о переименовании файлов, которые уже были переименованы. Но в вашем примере вы передаете путь, я не хочу этого, так как я уже буду в рабочем каталоге, и повторный ввод каталога может быть обременительным.

2. @Фернан, тогда оставь путь