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

PowerShell如何使用Get-ChildItem筛选含指定日期的Zip文件

解决方法

你的代码问题在于:

  • 使用 -match 时仅返回布尔值(匹配成功/失败),没有输出文件路径
  • -contains 是用于检查集合是否包含指定元素的运算符,不适合用来判断字符串是否包含子串

以下是几种正确实现方式:

方式一:精准过滤文件名并提取完整路径

$date = (Get-Date).ToString('yyyyMMdd')
# 仅匹配文件名中包含指定日期的zip文件,提取完整路径
$zipPath = Get-ChildItem -Path $path -Filter '*.zip' -Recurse | 
           Where-Object { $_.Name -match $date } | 
           Select-Object -ExpandProperty FullName

方式二:简化写法直接筛选路径

$date = (Get-Date).ToString('yyyyMMdd')
$zipPath = (Get-ChildItem -Path $path -Filter '*.zip' -Recurse).FullName | 
           Where-Object { $_ -match $date }

方式三:更严格的日期格式匹配(可选)

如果需要确保匹配的是恰好8位数字的日期格式(避免误匹配包含更长数字串的文件名),可以用正则表达式限定:

$date = (Get-Date).ToString('yyyyMMdd')
# 正则确保日期是独立的8位数字(前后可以是任意非数字或字符串首尾)
$zipPath = Get-ChildItem -Path $path -Filter '*.zip' -Recurse | 
           Where-Object { $_.Name -match "(?:^|\D)$date(?:\D|$)" } | 
           Select-Object -ExpandProperty FullName

关键说明:

  • -Filter '*.zip' 先筛选所有zip文件,比后续再过滤更高效
  • 使用 $_.Name 而非 FullName 可以避免路径中包含的日期干扰筛选结果
  • -match 支持正则匹配,适合灵活的字符串匹配场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:45:43