将一系列文件重命名为新序列,保留后缀

Rename a sequence of files to a new sequence, keeping the suffix

我需要帮助在 PowerShell 中创建一个命令来重命名具有以下格式的一系列文件:

001.jpg
001_1.jpg
002.jpg
002_1.jpg
003.jpg
003_1.jpg

进入一个可以以数字开头的新序列,例如 9612449,但后缀保持不变,因此新序列将是:

9612449.jpg
9612449_1.jpg
9612450.jpg
9612450_1.jpg
9612451.jpg
9612451_1.jpg

假设 9612449 是一个 偏移量 将添加到构成第一个 _ 分隔标记或所有基数的现有数字文件名:

# Simulate a set of input files.
$files = [System.IO.FileInfo[]] (
  '001.jpg',
  '001_1.jpg',
  '002.jpg',
  '002_1.jpg',
  '003.jpg',
  '003_1.jpg'
)

# The number to offset the existing numbers by.
$offset = 9612449 - 1

# Process each file and apply the offset.
$files | ForEach-Object {
  # Split the base name into the number and the suffix.
  $num, $suffix = $_.BaseName -split '(?=_)', 2
  # Construct and output the new name, with the offset applied.
  '{0}{1}{2}' -f ($offset + $num), $suffix, $_.Extension
}

以上会产生您问题中显示的输出。


应用于真正的文件重命名操作,你会做这样的事情:

Get-ChildItem -LiteralPath . -Filter *.jpg | 
  Rename-Item -NewName { 
    $num, $suffix = $_.BaseName -split '(?=_)', 2
    '{0}{1}{2}' -f ($offset + $num), $suffix, $_.Extension
  } -WhatIf

注意:上面命令中的-WhatIf common parameter预览操作。一旦您确定该操作将执行您想要的操作,请删除 -WhatIf