我想编写一个简短的 powershell 脚本来重命名文件,例如:
abc(1), abc(2), .., abc(10), .., abc(123), ..
到
abc(001), abc(002), .., abc(010), .., abc(123), ..
有什么想法吗? :)
最佳答案
试试这个:
Get-ChildItem abc* | Where {$_ -match 'abc\((\d+)\)'} |
Foreach {$num = [int]$matches[1]; Rename-Item $_ ("abc({0:000})" -f $num) -wh }
管道的 Where 阶段正在做两件事。首先,只传递与指定模式匹配的文件名。其次,它使用捕获组来获取位于 $matches[1]
中的名称的数字部分。
Foreach 阶段将脚本应用于传递给它的每个项目,由 $_
表示。它做的第一件事是获取旧文件名的“数字”部分。然后它使用 Rename-Item(PowerShell 的重命名命令)从 $_ 表示的旧名称重命名为使用格式化字符串 "abc({0:000})"-f $num< 计算的新名称
。在这种情况下,格式化指令进入 {}
,其中 0 表示在 -f
之后指定的值的位置。 :000
是一个格式化指令,最多显示三个前导零的数字。最后,-wh
是 -WhatIf
的缩写,它指示具有潜在破坏性的操作(如 Rename-Item)以显示它会做什么,而无需实际执行任何操作。一旦您对命令正常工作感到满意,请删除 -wh
并再次运行它。
关于powershell - 使用括号中的索引重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2953782/