Как увеличить числа в именах файлов на указанное значение с помощью 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
      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, бесплатный для личного использования.

Например, я объединяю ниже операции:

  1. Удалить первые два символа
  2. Подставьте возрастающее число, начиная с 16.

Другие вопросы по тегам