PowerShell脚本 - 从文件名报告特定字符串

时间:2014-10-02 19:41:36

标签: powershell

我目前正在尝试构建一个简单的脚本,用于报告文件名中的字符串

我有一个充满文件的目录,其名称如下:

C:\[20141002134259308][302de103-6dc8-4e29-b303-5fdbd39c60c3][U0447744][10.208.15.40_54343][ABC_01].txt
C:\[20141002134239815][302de103-6dc8-4e29-b303-5fdbd39c60c3][U0011042][10.168.40.34_57350][ABC_01].txt
C:\[20141002134206386][302de103-6dc8-4e29-b303-5fdbd39c60c3][u1603381][10.132.171.132_54385][ABC_01].txt
C:\[2014100212260259][302de103-6dc8-4e29-b303-5fdbd39c60c3][U0010217][10.173.0.132_49921][ABC_01].txt

因此,我想从每个文件名中提取以字母U和七位数字开头的用户ID,然后创建一个新的txt o csv并列出所有这些ID。那就是它。

1 个答案:

答案 0 :(得分:1)

正如帕特里斯指出的那样,你真的应该尝试自己做,然后用你试过的相关代码和你得到的错误来找我们。那就是说,我很无聊,这真的很容易。我使用正则表达式匹配文件的名称,然后对于匹配的每个匹配我输出捕获的字符串:

Get-ChildItem 'C:\Path\To\Files\*.txt' | Where{$_.Name -match "\[(U\d{7})\]"} | ForEach{$Matches[1]}

那将返回:

U0447744
U0011042
u1603381
U0010217

如果要将其输出到文件,只需将其输出到Out-File,并指定要保存的文件的完整路径和名称。