PowerShell新手求助:如何实现指定路径下特定扩展名文件批量重命名
PowerShell批量重命名指定文件
直接给你修正后的两种可行脚本:
简洁管道写法(推荐)
# 先加-WhatIf预览修改效果,确认无误后删除这个参数 Get-ChildItem -Path C:\temp -Include *.docx, *.txt -File | Rename-Item -NewName { $_.Name -replace 'CASENUMBER', 'case1' } -WhatIf
清晰循环写法(适合新手理解)
Get-ChildItem -Path C:\temp -Include *.docx, *.txt -File | ForEach-Object { # $_.FullName是当前文件的完整路径,确保重命名命令能精准定位文件 Rename-Item -Path $_.FullName -NewName ($_.Name -replace 'CASENUMBER', 'case1') -WhatIf }
原脚本的问题说明:
- 操作无关联:你原来的两条命令是独立的,
$_变量只有在管道流或循环脚本块里才代表当前遍历到的文件,单独执行Rename-Item时PowerShell不知道要操作哪个文件。 - 参数搭配错误:用
-Include时,把-Path设为C:\temp(不带末尾的*)更可靠;加上-File参数能只筛选文件,避免误操作文件夹。 - 重命名参数格式不对:直接写
-Newname ($_.Name -replace ...)无效,要么用脚本块{}包裹替换逻辑,要么在循环里明确指定文件路径。
记得先保留-WhatIf运行一遍,确认预览的重命名结果符合预期后,再去掉该参数执行实际修改。
内容的提问来源于stack exchange,提问作者Kevin Yu
相关产品推荐
相关产品推荐

