2011-06-28 17 views
1

1つのファイルの内容を取得して、別のファイルに数回複製しようとしています。私はこれを試しました:1つのファイルの内容を別のファイルに繰り返しコピーする

for ($i=0; $i -lt 5; $i++) { Get-Content source } | Out-File destination 

しかし、私はエラーが表示されます: "空のパイプ要素は許可されていません"。 forループの周りに次のようにかっこを入れます。

(for ($i=0; $i -lt 5; $i++) { Get-Content source }) | Out-File destination 

結果は「式が見つかりません」となります。

答えて

4
(get-content source) * 5 | out-file destination 
+0

彼の方が私より優れています:) – EBGreen

+0

それはとても簡潔です。 –

+0

ニース(+1)。それでも、他のソリューションより5倍(この例では)のメモリが必要です。大きなファイルや数字の場合、これが問題になります。 –

3

このお試しください:

1..5 | %{Get-Content source | Out-File destination -append} 

以上の効率的な:

$content = Get-Content source; 1..5 | %{Out-File -FilePath destination -InputObject $content -append} 

EDIT:

+0

が、あなたはアウトファイルに '-Append'フラグが必要になります、と私は高速化するために、'は、Get-Content'に '0' -ReadCountを追加したい:これは動作しますものごと: '1..5 | Foreach-Object {Get-Contentソース-ReadCount 0 |アウトファイルの宛先-Append} ' –

+0

あなたが編集を逃しました:) – EBGreen

+0

今すぐどうぞ? ;-) –

1

すなわち、スクリプトブロックとしてforループを起動しますパイプライン出力を生成何かを-appendを忘れましたが(forブロック自体はありません):

.{ 
    for ($i=0; $i -lt 5; $i++) { 
     Get-Content source 
    } 
} | 
Out-File destination 

(実際にもう一度ライナーにすることができます)

P.S. 2回目の試行はほぼ正しいです。ほとんど

$(for ($i=0; $i -lt 5; $i++) { Get-Content source }) | Out-File destination 
関連する問題