重命名项:添加唯一数字序列以防止重复的文件名

时间:2018-01-05 21:38:46

标签: powershell rename-item-cmdlet

我需要一种方法来重命名目录中的文件,这会导致简单的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 个答案:

答案 0 :(得分:2)

在这里使用计数器可以根据您的需要保持简单:

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