Как увеличить числа в именах файлов на указанное значение с помощью PowerRename в Windows 10 PowerToys?
У меня есть куча файлов с именами:
01. Filename.ext
02. Filename.ext
03. Filename.ext
etc.
Мне нужно пакетно переименовать их с помощью PowerToys PowerRename, увеличив число в начале имени файла на определенное значение, скажем, 15, чтобы их имена стали, например:
16. Filename.ext
17. Filename.ext
18. Filename.ext
etc.
Насколько я понимаю, для этой задачи мне следует использовать регулярные выражения. К сожалению, это все, что я понимаю по этому вопросу.
Поэтому прошу вашей помощи именно с такой задачей: что поставить в поля «Искать:» и «Заменить на:»?
2 ответа
Вариант PowerShell :
$Increment = 15
Get-ChildItem | Where Name -match '^(\d+)(.+)$' |
Select FullName,
@{ N = 'Index' ; E = { [Int]$Matches[1] }},
@{ N = 'NameText' ; E = { $Matches[2] }} |
Sort Index -Descending | ForEach{
Rename-Item $_.FullName -NewName ( '{0:d2}{1}' -f ( $_.Index + $Increment ), $_.NameText ) }
Разбираем это:
- The
-match
Оператор использует сопоставление регулярных выражений , возвращает логическое значение и заполняетАвтоматическая переменная . Регулярное выражение'^(\d+)(.+)$'
будет соответствовать любой строке, начинающейся с одной или нескольких цифр и хотя бы одного символа, следующего за этими цифрами, и генерировать две группы захвата: первые цифры в первой и весь последующий текст во второй:
PS C:\>>'01. FileName.txt' -match '^(\d+)(.+)$'
True
PS C:\> $matches
Name Value
---- -----
2 . FileName.txt
1 01
0 01. FileName.txt
- The
-f
Оператор формата создает строку, используя шаблон и список значений/переменных. Спецификаторы формата, такие какd2
в{0:d2}
среди прочего можно добавлять ведущие нули:
PS C:\>'{0:d2}{1}' -f 7, '. FileNaem.txt'
07. FileNaem.txt
- Командлет Rename -Item
-NewName
Параметр может быть либо строкой, либо блоком сценария, причем блок сценария позволяет создавать новое имя на основе значений в текущем$Matches
переменная:
{ '{0:d2}{1}' -f ( $Increment + $matches[1] ), $matches[2] }
PowerRename — неподходящий инструмент для сложного переименования такого типа. Более мощный инструмент — Bulk Rename Utility, бесплатный для личного использования.
Например, я объединяю ниже операции:
- Удалить первые два символа
- Подставьте возрастающее число, начиная с 16.