对文件或者文件夹实施重命名是一个常用操作,本文介绍如何使用 PowerShell 进行批量操作。
匹配变更
Get-ChildItem F:\demo [-File] [-Directory] -Recurse |
Select-Object {$_.Name -contains 'e'} |
ForEach-Object { Rename-Item $_.FullName $_.Name.Replace('e','x') }
以上代码执行后,将获取 F:\demo
目录(及其子目录)内容,并将其中名称中含有 e
的部分变更为 x
。
Get-ChildItem
获取指定目录全部内容,声明 File
或 Directory
用于筛选内容类型,Recurse
参数用于控制递归操作,简单地说就是控制获取内容的范围是否包含子目录。
Select-Object
用于筛选内容,本例的条件是:名称是否包含 e
,符合条件的向下一步传递。
ForEach-Object
用于遍历传入的对象,在遍历过程中调用 Rename-Item
进行更名。
编号命名
$i = 1
Get-ChildItem F:\demo *.jpg -Recurse |
ForEach-Object {
$newName = 'pic_{0:d6}{1}' -f $i, $_.Extension
Rename-Item $_.FullName $newName
$i++
}
以上代码执行后,将获取 F:\demo
目录(及其子目录)内扩展名为 jpg
的内容,并将其中名称变更为 pic_
后接六位数编号。
变量 newName
的值是一个生成字串,第一个替代值是项目编号,第二个替代值是项目扩展名信息。