3

以下がファイルの内容を切り捨てる理由を理解しています:

Get-Content <file> | Out-File <file>

これは、Out-File が最初に実行され、Get-Content がファイルを読み取る前にファイルを空にするためです。

しかし、上記のバリアントを試すと、ループに陥ります。

Get-Content <file> | Out-File -Append <file>

ループを中断してファイルを調べると、最初の内容が何度も繰り返されていることがわかります。なぜこれが起こっているのか誰か説明できますか?

ファイルの内容がループに入るのではなく、ファイルの内容が 2 回繰り返されることを期待していました。

4

1 に答える 1

3

Get-Content はコンテンツを 1 行ずつ提供し、Append はパイプラインから 1 行をファイルの末尾に追加します。したがって、遭遇するすべての行に対して、行が最後に追加されます。だから - それは決して終わらない。コンテンツが 2 回繰り返されることが予想される場合は、ファイル全体を変数に読み取り、それ自体に追加してから、結果をファイルに出力します。

于 2013-09-22T14:21:37.903 に答える