Powershell LastWriteTime使用select-string -pattern匹配的每个项目

时间:2015-07-08 18:48:43

标签: regex powershell select-string

试图查看文件列表并使用powershell中的regex解析出电话号码,但我还要包含每个文件的LastWriteTime

我目前正在使用此功能但似乎只从第一场比赛中提取我需要的日期信息

$loc = Read-Host "Enter location"
dir $loc *.xml | 
Select-String -pattern '\([0-9]{3}\) [0-9]{3}-[0-9]{4}' -AllMatches |
% {$_.Matches} |
Select @{n='    Date   Time    ';e={(get-item $loc).LastWriteTime.ToString('MM/dd/yyyy hh:mm:ss')}}, @{n=' Phone Number';e={$_.Value}} |
ft -AutoSize

结果是

Date   Time         Phone Number 
------------------- ------------- 
07/07/2015 04:27:32 (555) 555-1234
07/07/2015 04:27:32 (555) 555-2234
07/07/2015 04:27:32 (555) 555-3234
07/07/2015 04:27:32 (555) 555-4234

任何关于此的想法都会很棒

@Matt提供的解决方案

 dir $loc *.xml | Select-String -pattern '\([0-9]{3}\) [0-9]{3}-[0-9]{4}' -AllMatches | Select @{n='    Date   Time    ';e={(get-item $_.Path).LastWriteTime.ToString('MM/dd/yyyy hh:mm:ss')}}, @{n=' Phone Number ';e={$($_.Matches).Value}} |ft -AutoSize

1 个答案:

答案 0 :(得分:1)

我要清理代码,但是删除了内部foreach循环并添加了我想要的属性。

df['a'].astype(str)

matches对象有一个path属性,表示匹配行的完整文件路径。我使用点符号表示匹配的值,至少需要PowerShell 3.0。如果你没有那么容易解决。