好吧,说我在目录树中有一堆文本文件,都有相同的名称,我想将它们全部连接成1个文件。
我让它与foreach合作,但我想知道是否有更好的方法来使用pipleline。
有更好的方法吗?
代码:
dir -filter users.txt -recurse | foreach { get-content $_.FullName | add-content .\All.txt }
这很有效,但我觉得如果没有foreach,我应该能够做到这一点。
答案 0 :(得分:6)
如果您阅读Get-Content
的帮助,您会看到-Path
接受string []数组,这意味着您可以尝试直接在Get-ChildItem中输出输出。
[22:24:57] PS-ADMIN> get-help Get-Content
NAME
Get-Content
SYNOPSIS
Gets the contents of a file.
SYNTAX
Get-Content [-Path] <String[]> [-Credential <PSCredential>] ......
所以试试这个:
Get-ChildItem -Filter users.txt -Recurse | Get-Content | Set-Content .\all.txt
编辑:实际上:在研究了更多之后,我发现它是-LiteralPath
从FileInfo对象获取PSPath
属性并将其用作路径。不过,同样的逻辑: - )