Rename-Item: добавить уникальную числовую последовательность, чтобы предотвратить повторяющиеся имена файлов

Мне нужен способ переименовать файлы в каталоге, что приведет к ошибке с простым Rename-Item, Для файлов требуется одинаковый 10-значный код, за которым следует 4-значный заполнитель (только цифры, пожалуйста).

Текущие имена файлов:

01_img_0028.JPG
01_img_0029.JPG
02_img_0028.JPG
02_img_0029.JPG

Учитывая файлы выше, переименование файлов с split (используя 4 цифры в оригинальном имени) не получится, потому что будут файлы с таким же именем:

B0000000000.0028.JPG
B0000000000.0029.JPG
B0000000000.0028.JPG
B0000000000.0029.JPG

У кого-нибудь есть идея обойти это? 4 цифры могут быть любой последовательностью чисел, но было бы здорово, если бы мы могли сделать конечный результат похожим на:

B0000000000.0001.JPG
B0000000000.0002.JPG
B0000000000.0003.JPG
B0000000000.0004.JPG

Вот мой текущий код, который будет переименовывать все уникальные файлы и первый из дубликатов, но с ошибками в файлах, которые затем будут повторяться имена:

$jpgToRename = GCI -Path $pathToRename -Filter '*.jpg' -R
foreach ($jpg in $jpgToRename) {
    $splitPath = $jpg.FullName.Split("\\")
    $newName = -join ($splitPath[7], ".", $jpg.BaseName, ".PC_850.jpg")
    Rename-Item $jpg.FullName -NewName $newName
}

1 ответ

Решение

Использование счетчика поможет вам в этом:

$jpgToRename = GCI -Path $pathToRename -Filter '*.jpg' -R
$counter = 1
foreach($jpg in $jpgToRename){
    $splitPath = $jpg.FullName.Split("\\")
    $formattedCounter = $counter.ToString("0000")
    $newName =  -Join($splitPath[7], ".",$formattedCounter, $jpg.BaseName, ".PC_850.jpg")
    Rename-Item $jpg.FullName -NewName $newName
    $counter++
}
Другие вопросы по тегам