2

好的,假设我在目录树中有一堆文本文件,它们都具有相同的名称,我想将它们全部连接到一个文件中。

我让它与 foreach 一起工作,但我想知道是否有更好的方法来使用管道。

有一个更好的方法吗?

代码:

dir -filter users.txt -recurse | foreach { get-content $_.FullName | add-content .\All.txt }

这行得通,但我觉得我应该能够在没有 foreach 的情况下做到这一点。

4

1 回答 1

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

编辑:实际上:在研究更多之后,我发现它是从 FileInfo 对象-LiteralPath中获取PSPath属性并将其用作路径。尽管如此,同样的逻辑:-)

于 2013-01-17T21:23:37.043 回答