2017-06-06 65 views
2

特定行因此,文件夾結構如下所示: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 \子文件夾\ 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

意識到我需要通過數組

中走了其他的引用,此代碼的工作要求:

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

'GET-ChildItem -Recurse篩選器 「totals.txt」 |'沒有哪裏效率更高。 – LotPings

相關問題