微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多个文件名称中的 Powershell 偏移量由常量

如何解决多个文件名称中的 Powershell 偏移量由常量

我有多个来自相机的文件名称为“00010001”、“00010002”等。这些文件类型(JPG、CR2、xmp、MOV)在一个文件夹中(比如 C:\camera)。

我需要在所有文件名的数字上加 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 或 {{1} 的文件}}
  • 将该 BaseNaem 转换为整数并加上 10000
  • 使用 .MOV 格式运算符重新组合文件名,其中模板字符串 -f 确保所有(新)数字都以零为前缀,最多 8 位

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。