2011-06-28 135 views
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} 

编辑:忘了-append

+0

差不多,但你需要的'-Append'标志出文件,我想添加一个'-ReadCount 0'到'GET-Content'加快东西了: '1..5 | Foreach-Object {Get-Content source -ReadCount 0 | Out-File destination -Append} –

+0

你错过了编辑:) – EBGreen

+0

现在好了吗? ;-) –

1

调用for环路作为一个脚本块,即一些生产流水线输出(for块本身没有):

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

(确实可以再次使它成为单线)

P.S.你的第二次尝试几乎是正确的。这工作:

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