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

Get-ChildItem无法识别带方括号的MP4文件?求解决方法

解决PowerShell中Get-ChildItem无法识别带方括号MP4文件的问题

嘿,我来帮你搞定这个头疼的问题!你遇到的情况是因为PowerShell里的方括号[]属于通配符(用来表示字符集范围),直接写完整文件名时会被当成匹配规则,而不是字面的文件名。下面给你几个实用的解决方案:

方案一:先通配符过滤,再循环处理

这也是你一开始考虑的思路,先通过-Filter '*.mp4'拿到所有MP4文件,再在ForEach-Object里针对性处理。这种方法不用纠结特殊字符转义,通用性很强:

# 先获取目录下所有MP4文件,再逐个处理
Get-ChildItem -Filter '*.mp4' | ForEach-Object {
    # 示例:输出文件的完整路径
    Write-Host "找到目标文件:$($_.FullName)"
    
    # 如果需要针对特定带方括号的文件操作,可添加判断
    if ($_.Name -eq '你的文件[带括号].mp4') {
        # 这里写你要执行的操作,比如复制、移动等
        Copy-Item -Path $_.FullName -Destination 'D:\备份文件夹\'
    }
}

方案二:正确转义方括号后直接匹配

如果你明确知道文件名,只需要给每个方括号前加上反引号来转义,让PowerShell把它们当成普通字符解析。比如文件名为movie[2024].mp4`,写法如下:

Get-ChildItem -Path 'movie`[2024`].mp4'

注意:这个方法是用在-Path参数里的,因为-LiteralPath不支持通配符转义,它会完全按照字面解析路径。

方案三:结合-LiteralPath和Where-Object过滤

如果需要遍历目录同时精准匹配文件名,可以先用-LiteralPath指定目录(避免目录名里的特殊字符干扰),再用Where-Object过滤出目标MP4文件:

# 指定目标目录,过滤出所有MP4文件
Get-ChildItem -LiteralPath 'C:\你的目标目录' | Where-Object { $_.Name -like '*.mp4' }

# 或者精准匹配某个带方括号的文件
Get-ChildItem -LiteralPath 'C:\你的目标目录' | Where-Object { $_.Name -eq '特定文件名[带括号].mp4' }

这几个方法里,方案一最省心,尤其是当你需要批量处理MP4文件时;如果只是找单个文件,方案二或三都能快速解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:29:01