Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6626
Благодарности: 1528

Профиль | Отправить PM | Цитировать


Я изначально не предусматривал ситуацию с постоянным повторным переименованием одних и тех же файлов в каталоге.
Ну вот, можно попробовать:

Сквозная нумерация
Код: Выделить весь код
# Каталог
$folder = 'C:\temp\rename'
# Буквенный индекс конечных файлов
$letters = 'zz'
# Кол-во разрядов числа конечных файлов
$digits = '00000'

$pattern = "$letters\d{$($digits.ToCharArray().count)}"
$renamed,$notRenamed = (dir $folder -File -Recurse -OutVariable files).where({$_.BaseName -match "^$pattern$"}, 'Split')
$numbers = $renamed.basename -replace '\D' |% {$_ -as [int]}
$freenum = (1..($files.count)).where({$_ -notin $numbers})
$c = 0
$notRenamed |% {
    $_ |Rename-Item -NewName "$letters$($freenum[$c].ToString("$digits"))$($_.Extension)" -WhatIf
    $c++
}
Нумерация в каждой папке начинается заново
Код: Выделить весь код
# Каталог
$folder = 'C:\temp\rename'
# Буквенный индекс конечных файлов
$letters = 'zz'
# Кол-во разрядов числа конечных файлов
$digits = '00000'

$pattern = "$letters\d{$($digits.ToCharArray().count)}"
dir $folder -Directory -Recurse |% {
    $renamed,$notRenamed = (dir $_.fullname -File -OutVariable files).where({$_.BaseName -match "^$pattern$"}, 'Split')
    $numbers = $renamed.basename -replace '\D' |% {$_ -as [int]}
    $freenum = (1..($files.count)).where({$_ -notin $numbers})
    $c = 0
    $notRenamed |% {
        $_ |Rename-Item -NewName "$letters$($freenum[$c].ToString("$digits"))$($_.Extension)" -WhatIf
        $c++
    }
}
Уберите -WhatIf, чтобы с вывода статистики переключить на реальные действия.

Переименовываются только те файлы, которые не совпадают с паттерном. Если в нумерации есть пропуски, то они будут заполняться новыми файлами.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 28-11-2024 в 17:31.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:23, 28-11-2024 | #9