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

Windows环境下PowerShell获取文件名末尾为数字的文件列表问题

解决PowerShell筛选文件名末尾为数字的ZIP文件问题

问题原因

PowerShell的Get-ChildItem参数-Filter依赖Windows原生文件系统筛选器,其通配符规则和资源管理器/CMD的DIR命令存在差异,导致*1.zip这类筛选无法按预期匹配文件名末尾为数字的文件。而*.zip能正常工作是因为这是最基础的扩展名筛选,符合原生筛选器的处理逻辑。

可行解决方案

方案1:结合Where-Object与字符串方法(直观易读)

先获取所有ZIP文件,再筛选文件名(不含扩展名)末尾为指定数字的文件:

# 筛选所有末尾为数字的ZIP文件
$filesToMove = Get-ChildItem -Path $sourceFolder -File -Filter "*.zip" | Where-Object { $_.BaseName -match '\d$' }

# 筛选末尾为2的ZIP文件(对应示例中的FileNumber5932.zip)
$filesToMove = Get-ChildItem -Path $sourceFolder -File -Filter "*.zip" | Where-Object { $_.BaseName.EndsWith('2') }

方案2:使用正则表达式精确匹配文件名

直接匹配完整文件名的末尾是数字+.zip的格式:

# 筛选所有末尾为数字的ZIP文件
$filesToMove = Get-ChildItem -Path $sourceFolder -File | Where-Object { $_.Name -match '\d\.zip$' }

# 筛选末尾为2的ZIP文件
$filesToMove = Get-ChildItem -Path $sourceFolder -File | Where-Object { $_.Name -match '2\.zip$' }

方案3:使用-Include参数(简化写法)

注意-Include需要搭配路径末尾的\*或-Recurse参数才能生效:

# 筛选所有末尾为数字的ZIP文件
$filesToMove = Get-ChildItem -Path "$sourceFolder\*" -File -Include "*[0-9].zip"

# 筛选末尾为2的ZIP文件
$filesToMove = Get-ChildItem -Path "$sourceFolder\*" -File -Include "*2.zip"

验证效果

针对你提供的文件列表:
FileNumber1796.zip
FileNumber2021.zip
FileNumber5932.zip
FileNumber4369.zip
FileNumber1615.zip

使用筛选末尾为2的命令后,只会返回FileNumber5932.zip,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 01:13:12