PowerShell如何用正则匹配含括号日期格式的日志文件名
PowerShell 正则匹配日志文件名解决方案
问题根因
你当前的匹配失败主要是两处正则语法错误导致:
- 仅转义了左方括号
[,未转义右方括号],二者在正则中都是表示字符组的特殊符号,必须全部转义才能匹配字面量方括号 - 后缀名前的
.未转义,正则中.会匹配任意单个字符,无法严格限定后缀为.txt - 额外注意:你路径中出现的
ProbeService_ITOPS_Log和正则里的Service_ITOPS_Log前缀不一致,需根据实际文件名前缀调整匹配规则
正确实现代码
写法1:Get-ChildItem 过滤(最稳妥,推荐使用)
# 替换为你的日志文件夹绝对路径,避免相对路径导致的匹配异常 $logFolder = "C:\Users\你的用户名\Desktop\ProbeService_ITOPS_Log" # 匹配规则根据实际文件名前缀调整,以下示例对应文件名格式为 Service_ITOPS_Log[xxxx-xx-xx].txt $targetFile = Get-ChildItem -Path $logFolder -File | Where-Object { $_.Name -match 'Service_ITOPS_Log\[\d{4}-\d{2}-\d{2}\]\.txt' }
写法2:如果需要匹配带Probe前缀的文件,调整正则前缀即可
$targetFile = Get-ChildItem -Path $logFolder -File | Where-Object { $_.Name -match 'ProbeService_ITOPS_Log\[\d{4}-\d{2}-\d{2}\]\.txt' }
验证方法
如果依然匹配不到,可以先打印文件夹内所有文件名,确认文件名格式是否符合预期:
Get-ChildItem -Path $logFolder | Select-Object FullName,Name
内容的提问来源于stack exchange,提问作者Eddy
相关产品推荐
相关产品推荐

