Rename-Item : 添加唯一的数字序列以防止重复的文件名
Rename-Item : add unique numeric sequence to prevent duplicate file names
我需要一种方法来重命名目录中的文件,这会导致简单的 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
}
在此处使用计数器可以使您的需求保持简单:
$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++
}
我需要一种方法来重命名目录中的文件,这会导致简单的 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
}
在此处使用计数器可以使您的需求保持简单:
$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++
}