Я пытаюсь рекурсивно удалить "- 13234" из группы файлов.И если файл уже присутствует после удаления этой части, он должен добавить (1), (2) и так далее после нового имени файла.
Я протестировал его на небольшом наборе файлов, и он работал нормально.Теперь я попробовал его на тестовом наборе большего размера, и он выдал несколько ошибок.
Например: невозможно переименовать файл не существует Пример: невозможно создать файл, когда файл уже существует
Для многихфайлы, похоже, что у него все хорошо на самом деле.
$files = Get-ChildItem <location> -recurse -file | sort name | group-object -property {$_.fullname -replace "(.*)-.*?(\..*?)$",'$1$2'}
$files | foreach {
$inc = 0
if ($_.count -gt 1) {
rename-item -literalpath $_.group[0].fullname -NewName (($_.group[0].basename -replace "(.*)-.*?$",'$1') + $_.group[0].extension)
$inc++
for ($i = $inc; $i -lt $_.count; $i++) {
rename-item -literalpath $_.group[$i].fullname -NewName (($_.group[$i].basename -replace "(.*)-.*?$",'$1') + "($i)" + $_.group[$i].extension)
}
}
else {
rename-item -literalpath $_.group.fullname -NewName (($_.group.basename -replace "(.*)-.*?$",'$1') + $_.group.extension)
}
}