重命名括号中带索引的文件

时间:2010-06-01 22:18:18

标签: powershell file-rename

我想编写一个简短的PowerShell脚本来重命名文件,如:

abc(1), abc(2), .., abc(10), ..,  abc(123), .. 

abc(001), abc(002), .., abc(010), .., abc(123), ..

有什么想法吗? :)

1 个答案:

答案 0 :(得分:7)

试试这个:

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并再次运行。