多个文件名称中的Powershell偏移量由一个常量
Powershell offset number in name of multiple files by a constant
我有多个来自相机的文件,名称为“00010001”、“00010002”等。在一个文件夹(比如说 C:\camera)中有多种文件类型(JPG、CR2、xmp、MOV)。
我需要在所有文件名中的数字上加上 10000,所以它变成了“00020001”、“00020002”等。我想这可以用 powershell 中的一个简单脚本来完成,但我完全没有经验它。如果有人帮助我,我将不胜感激。谢谢。
如果代码还应处理 'C:\Camera' 子文件夹中的文件,您可以使用 -Recurse
和 -Include
参数:
(Get-ChildItem -Path 'C:\Camera' -File -Include '*.JPG','*.CR2','*.XMP','*.MOV' -Recurse) |
Where-Object { $_.BaseName -match '\d{8}' } |
Rename-Item -NewName { '{0:D8}{1}' -f ([int]$_.BaseName + 10000), $_.Extension } -WhatIf
但是如果这不应该比根文件夹更深 'C:\Camera',那么执行此操作:
(Get-ChildItem -Path 'C:\Camera' -File) |
Where-Object { $_.BaseName -match '\d{8}' -and $_.Extension -match '\.(JPG|CR2|XMP|MOV)$' } |
Rename-Item -NewName { '{0:D8}{1}' -f ([int]$_.BaseName + 10000), $_.Extension } -WhatIf
一旦您对代码会按照您的意愿创建新文件名感到满意,请移除安全开关-WhatIf
解释:
- 获取文件夹中 BaseNames 由 8 位数字组成
($_.BaseName -match '\d{8}'
) 且扩展名为 JPG
、.CR2
、.XMP
或 .MOV
- 将 BaseNaem 转换为整数并加上 10000
- 使用
-f
格式运算符重新组合文件名,其中模板字符串 {0:D8}{1}
确保所有(新)数字都以最多 8 位的零为前缀
我有多个来自相机的文件,名称为“00010001”、“00010002”等。在一个文件夹(比如说 C:\camera)中有多种文件类型(JPG、CR2、xmp、MOV)。
我需要在所有文件名中的数字上加上 10000,所以它变成了“00020001”、“00020002”等。我想这可以用 powershell 中的一个简单脚本来完成,但我完全没有经验它。如果有人帮助我,我将不胜感激。谢谢。
如果代码还应处理 'C:\Camera' 子文件夹中的文件,您可以使用 -Recurse
和 -Include
参数:
(Get-ChildItem -Path 'C:\Camera' -File -Include '*.JPG','*.CR2','*.XMP','*.MOV' -Recurse) |
Where-Object { $_.BaseName -match '\d{8}' } |
Rename-Item -NewName { '{0:D8}{1}' -f ([int]$_.BaseName + 10000), $_.Extension } -WhatIf
但是如果这不应该比根文件夹更深 'C:\Camera',那么执行此操作:
(Get-ChildItem -Path 'C:\Camera' -File) |
Where-Object { $_.BaseName -match '\d{8}' -and $_.Extension -match '\.(JPG|CR2|XMP|MOV)$' } |
Rename-Item -NewName { '{0:D8}{1}' -f ([int]$_.BaseName + 10000), $_.Extension } -WhatIf
一旦您对代码会按照您的意愿创建新文件名感到满意,请移除安全开关-WhatIf
解释:
- 获取文件夹中 BaseNames 由 8 位数字组成
($_.BaseName -match '\d{8}'
) 且扩展名为JPG
、.CR2
、.XMP
或.MOV
- 将 BaseNaem 转换为整数并加上 10000
- 使用
-f
格式运算符重新组合文件名,其中模板字符串{0:D8}{1}
确保所有(新)数字都以最多 8 位的零为前缀