如何使用PowerShell将驻留在多个目录中的文件的第一行分配给每个文件的变量?

时间:2014-12-01 11:55:31

标签: powershell

数据集

C:\temp\powershelltest\
                      \dir.1\test.txt
                      \dir.2\test.txt
                      \dir.3\test.txt
                      \test.ps1

目录。[0-9] \ test.txt的

file dir[0-9]
helloworld

尝试

test.ps1

$content = Get-Content "C:\temp\powershelltest\dir.[0-9]\test.txt"

Write-Host $content[0]

结果

当前结果

PS C:\Windows\system32> . "C:\temp\powershelltest\test.ps1"
file dir1

预期结果

PS C:\Windows\system32> . "C:\temp\powershelltest\test.ps1"
file dir1
file dir2
file dir3

1 个答案:

答案 0 :(得分:2)

Get-Content不会使用正则表达式进行过滤,而是使用approved wildcards进行过滤。我会用Get-ChildItem和你的wilcards来解决这个问题。 注意您还需要指定Recurse以从子文件夹中获取结果

Get-ChildItem "C:\temp\powershelltest\dir.[0-9]" -Recurse -Filter "test.txt" | 
    ForEach-Object{ Get-Content $_.FullName | Select-Object -First 1}

这应该从每个“test.txt”文档中获取第一行,该文档具有“dir”。后跟父目录的单个数字。

导致:

PS C:\Windows\system32> . "C:\temp\powershelltest\test.ps1"
file dir1
file dir2
file dir3