PowerShell - 从多个特定嵌套文件复制特定行

时间:2017-06-06 21:03:34

标签: powershell

因此,文件夹结构如下所示:

RootFolder

  • RootFolder
    • SubFolder1
      • SubSubFolder1
        • totals.txt
      • SubSubFolder2
        • totals.txt
    • SubFolder2
      • SubSubFolder1
        • totals.txt
      • SubSubFolder2
        • totals.txt

我想要做的是递归遍历这些子文件夹以获取totals.txt文件。读取内容,并将第22,26,30,34,38和42行(第一行为0而不是1)复制到一个组合文件中。

我从这段代码开始:

Get-ChildItem -Recurse | Where-Object {$_ -like "totals.txt" } | Get-Content | Select-Object -Index 22,26,30,34,38,42  | Add-Content "DataInportFile.txt"

但是,这只能找到RootFolder \ SubFolder \ SubSubFolder \ totals.txt,然后退出脚本。不是我想要的......

我需要的是上面的脚本继续递归搜索下一个文件和下一个文件,直到所有目录都在结构中搜索。所以我用过这个:

Get-ChildItem -Recurse | ForEach-Object {$_ -like "totals.txt" } | Get-Content | Select-Object -Index 22,26,30,34,38,42  | Add-Content "DataInportFile.txt"

但是,此脚本错误

C:\Users\user1\scripts\Untitled1.ps1:1 char:69
+ ... urse | ForEach-Object {$_ -like "totals.txt" } | $_.filename #| Get- ...
+                                                       ~~~~~~~~~~~
Expressions are only allowed as the first element of a pipeline.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : ExpressionsMustBeFirstInPipeline

我可以使用一些帮助来搞清楚PowerShell脚本的其余部分。如此接近却没有快乐。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

意识到我需要遍历数组

对于其他参考,此代码按要求运行:

Get-ChildItem -Recurse | Where-Object {$_ -like "totals.txt" } | 
    %{
        (Get-Content $_.FullName) | Select-Object -Index 22,26,30,34,38,42  | Add-Content "DataInportFile.txt"
        }