2

我需要一种方法来重命名目录中的文件,这会导致简单的Rename-Item. 文件需要相同的 10 位代码,后跟 4 位占位符(请仅提供数字)。

当前文件名:

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

考虑到上面的文件,用 a 重命名文件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
}
4

1 回答 1

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++
}
于 2018-01-05T22:12:35.007 回答