Как переименовать каждое имя файла .jpg с последовательными номерами в PowerShell - PullRequest
2 голосов
/ 28 февраля 2020

Я совершенно новичок в PowerShell или любой другой оболочке в этом отношении. Я пытаюсь найти способ переименовать 109 фотографий с пометкой IMG_3571 в IMG_3679. Я хочу нумеровать их последовательно, начиная с 236. Я попробовал несколько вещей, и вот где я сейчас нахожусь:

Get-ChildItem "C:\Files to Transfer\test"*.jpg | ForEach-Object -begin {$count=236} -process {rename-item -Path "C:\Files to Transfer\test" -NewName "$count"}

Я получаю это сообщение об ошибке 108 раз:

At line:1 char:95
+ ... } -process {rename-item -Path "C:\Files to Transfer\test" -NewName "$ ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand

Также файл с именем «test» (где содержатся все фотографии) изменен на 236 ...

Редактировать: Я хотел бы, чтобы файлы без «IMG» во имя. Только цифры.

Спасибо всем! Вот что сделал:

Get-ChildItem "C:\Files to Transfer\test\*.jpg" | ForEach-Object -begin {$count=236} -process {rename-item -Path $_.fullname -NewName "$count.jpg";$count++}

1 Ответ

3 голосов
/ 29 февраля 2020

Вы близки.

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

Попробуйте это:

Get-ChildItem "C:\Files to Transfer\test\*.jpg" | ForEach-Object -begin {$count=236} -process {rename-item -Path $_.fullname -NewName "$count.jpg";$count++}

Очень полезно добавить -WhatIf к вещам вы пытаетесь, чтобы вы могли видеть, что произойдет, фактически не делая этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...