因此,文件夹结构如下所示:
RootFolder
我想要做的是递归遍历这些子文件夹以获取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脚本的其余部分。如此接近却没有快乐。谢谢你的帮助。
答案 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"
}