Ответ Райана хорош, потому что он работает без жесткой ссылки на базовое имя нового имени файла.
Я всегда переименовываю файлы по той или иной причине и находил творческие способы манипулирования строками с помощью powershell. Вот еще один способ сделать это:
gci *.jpg | Rename-Item -NewName {$_.basename -replace "$($_.basename.split(".")[-1])$","$(290-$_.basename.split(".")[-1])$($_.extension)"}
Эту однострочную строку можно использовать для переименования других файлов таким же образом, будь то файлы jpgs, gif или txt. Единственное требование - последняя часть базового имени заканчивается на «. #».
Итак, что здесь происходит? Чтобы разбить его, скажем, $ _ в настоящее время является [System.IO.FileInfo] объект для файла "Vitrine Hinge.12.jpg". Следовательно:
$ _. Базовое имя
будет равно [строка] "Витрин Петля.12"
$_.basename.split(".")
приведет к массиву со следующими записями:
Door Hinge
12
Таким образом, [1] будет ссылаться на "12". Однако обратите внимание, что я вместо этого использовал:
$_.basename.split(".")[-1]
Это потому, что если бы у меня был файл с именем "Viterine Hinge.Chrome.12.jpg », я бы сделал ссылку на" Chrome ". Использование [-1] даст мне последний элемент в массиве, и, следовательно, не будет иметь значения, будут ли в моем файле другие точки в имени.
Хорошо, теперь на этом этапе я инкапсулирую это в $() и использую в операторе my -replace. Обратите внимание, что первый аргумент заканчивается на $, чтобы в конце строки было найдено регулярное выражение. Таким образом, не имеет значения, если в моих файлах есть другие номера в имени. Например, «Viterine D00r Knob.0.jpg» не будет переименован в «Viterine D290290r Knob.290.jpg»
Дайте мне знать, если что-то пропустил, ура :)