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