You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell Get-ChildItem无法识别含[]的文件,重命名报错

解决PowerShell重命名含[]文件名失败的问题

问题场景

我使用以下PowerShell代码,为C:\Users\Documents\SAMPLE目录及其子目录下的.mp4、.mkv文件批量添加(TEST)标识:

gci C:\Users\Documents\SAMPLE\* -in *.mp4,*.mkv -Recurse | % { rename-item –path $_.Fullname –Newname ( $_.basename +  ' (TEST)' + $_.extension) }

代码对普通文件名有效,但处理含[]的文件时会报错:

Cannot rename because item at 'C:\Users\Documents\SAMPLE\AAAAAAAAA[B].mp4' does not exist

问题原因

PowerShell中[]属于通配符(用于匹配括号内任意单个字符),当使用-Path参数传入含[]的路径时,PowerShell会将其解析为通配符表达式,而非实际的字面路径,因此无法定位到目标文件。

解决方案

最简便可靠的方法是使用-LiteralPath参数替代-Path,该参数会将传入的路径作为字面量处理,不解析任何通配符:

Get-ChildItem C:\Users\Documents\SAMPLE\* -Include *.mp4,*.mkv -Recurse | ForEach-Object {
    Rename-Item -LiteralPath $_.FullName -NewName ($_.BaseName + ' (TEST)' + $_.Extension)
}

注:代码中把缩写的gci(Get-ChildItem)、%(ForEach-Object)展开为全称以提升可读性,你也可以保留缩写版本,功能不受影响。

内容的提问来源于stack exchange,提问作者arsaces

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 03:24:21