好的,假设我在目录树中有一堆文本文件,它们都具有相同的名称,我想将它们全部连接到一个文件中。
我让它与 foreach 一起工作,但我想知道是否有更好的方法来使用管道。
有一个更好的方法吗?
代码:
dir -filter users.txt -recurse | foreach { get-content $_.FullName | add-content .\All.txt }
这行得通,但我觉得我应该能够在没有 foreach 的情况下做到这一点。
好的,假设我在目录树中有一堆文本文件,它们都具有相同的名称,我想将它们全部连接到一个文件中。
我让它与 foreach 一起工作,但我想知道是否有更好的方法来使用管道。
有一个更好的方法吗?
代码:
dir -filter users.txt -recurse | foreach { get-content $_.FullName | add-content .\All.txt }
这行得通,但我觉得我应该能够在没有 foreach 的情况下做到这一点。
如果您阅读帮助,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
编辑:实际上:在研究更多之后,我发现它是从 FileInfo 对象-LiteralPath
中获取PSPath
属性并将其用作路径。尽管如此,同样的逻辑:-)