2

わかりました。ディレクトリツリーに同じ名前のテキストファイルがたくさんあり、それらをすべて1つのファイルに連結したいとします。

foreachで動作させましたが、piplelineを使用するより良い方法があるかどうか疑問に思いました。

これを行うためのより良い方法はありますか?

コード:

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

それはうまくいきましたが、私はforeachなしでそれを行うことができたはずだと感じました。

4

1 に答える 1

6

ヘルプを読むと、 string []配列Get-Contentを受け入れることがわかります-Path。これは、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-objectsからプロパティを取得し、それをパスとして使用して-LiteralPathいることがわかりました。PSPathそれでも、同じロジック:-)

于 2013-01-17T21:23:37.043 に答える