如何使用Powershell获取符合指定命名规则且包含当日日期的XLSX文件
PowerShell 筛选指定目录下当日生成符合命名规则XLSX文件的修正方案
原代码核心问题
你写的代码无法正常运行主要有两个问题:
- 类型不匹配:正则捕获到的8位日期是字符串格式(如
20211206),而(Get-Date).Date返回的是DateTime类型对象,二者直接比较永远不相等 - 正则匹配精度不足:通用的8位数字匹配规则可能误抓其他包含8位数字的XLSX文件,没有对齐你指定的文件名前缀规则
正确实现代码
# 生成和文件名格式对齐的当日8位日期字符串 $todayDateStr = Get-Date -Format 'yyyyMMdd' # 筛选同时匹配命名规则和当日日期的文件 Get-ChildItem -Path "Testfolder\*.XLSX" | Where-Object { $_.Name -match '^Transfer[A-Z]{2}_MGH_(\d{8})\d+_xlsx\.XLSX$' -and $Matches[1] -eq $todayDateStr }
可选扩展
如果需要同时校验文件的实际创建时间为当日,可在Where-Object的判断条件中追加-and $_.CreationTime.Date -eq (Get-Date).Date即可。
内容的提问来源于stack exchange,提问作者Razz
相关产品推荐
相关产品推荐

