将一系列文件重命名为新序列,保留后缀
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
。
我需要帮助在 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
。