Windows怎么用PowerShell批量重命名文件_Windows如何用Rename-Item和正则批量修改文件名【技巧】-1

如果您需要在Windows系统中批量修改大量文件的名称,PowerShell提供了高效且灵活的命令行方式。以下是使用Rename-Item配合正则表达式实现多种批量重命名场景的具体操作步骤:

一、基础语法与变量准备

Rename-Item是PowerShell内置命令,用于重命名单个或多个文件;结合Get-ChildItem可遍历目标目录,再通过ForEach-Object调用Rename-Item,并利用正则表达式(-replace)动态生成新文件名。所有操作均需在具有读写权限的目录下执行。

1、以管理员身份打开PowerShell窗口。

2、使用Set-Location命令切换至目标文件夹,例如:Set-Location “C:\MyFiles”。

3、运行Get-ChildItem确认待处理文件列表,例如:Get-ChildItem *.txt。

二、替换文件名中指定字符串

该方法适用于将文件名中某固定子串统一替换成另一字符串,如将所有“old”改为“new”,不区分大小写且支持通配匹配。

1、执行以下命令:Get-ChildItem *.log | ForEach-Object { Rename-Item $_.FullName $_.Name.Replace(“error”, “warning”) }。

2、若需忽略大小写,改用正则表达式:Get-ChildItem *.log | ForEach-Object { Rename-Item $_.FullName ($_.Name -replace “(?i)error”, “warning”) }。

3、验证结果:再次运行Get-ChildItem查看文件名是否已更新。

三、按序号重命名并补零

该方法适用于将无序文件按原始顺序重新编号,如将“IMG_001.jpg”、“abc.png”等统一改为“photo_001.jpg”、“photo_002.png”,确保序号对齐且位数一致。

1、定义计数器变量:$i = 1。

2、执行重命名循环:Get-ChildItem *.* | ForEach-Object { $newName = “photo_{0:D3}{1}” -f $i++, $_.Extension; Rename-Item $_.FullName $newName }。

3、注意:此操作依赖Get-ChildItem默认返回顺序(通常为文件系统排序),如需按时间或名称排序,需先添加Sort-Object参数。

四、提取并保留文件名中特定模式部分

该方法适用于从复杂文件名中提取符合正则规则的部分作为新名称,例如从“Report_Q3_2023_v2_final.pdf”中仅保留“Q3_2023.pdf”。

1、编写匹配逻辑:$pattern = ‘Report_(Q\d{1,2}_\d{4})[^.]*\.(\w+)$’。

2、执行提取重命名:Get-ChildItem *.pdf | ForEach-Object { if ($_.Name -match $pattern) { $newName = “$($matches[1]).$($matches[2])”; Rename-Item $_.FullName $newName } }。

3、检查$matches变量内容可确认捕获组是否正确匹配,避免误删关键信息。

五、添加前缀或后缀

该方法适用于统一为所有文件添加时间戳、项目代号等标识,如在每个文件名前加上“[2024]”或在末尾追加“_backup”。

1、添加前缀示例:Get-ChildItem *.docx | ForEach-Object { Rename-Item $_.FullName (“[2024]” + $_.Name) }。

2、添加后缀示例:Get-ChildItem *.xlsx | ForEach-Object { Rename-Item $_.FullName ($_.BaseName + “_backup” + $_.Extension) }。

3、若需防止重复命名冲突,可先用Test-Path检查目标文件是否存在,再决定是否跳过或覆盖。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。