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++
}