下面的代码会将文本文件中的内容复制到目录中的文件中,但它会覆盖现有的文件内容:
Get-ChildItem $FilePath -Recurse -Include *.docx,*folder\abc\source.txt | ForEach-Object {Copy-Item $_.FullName -Destination C:\destination.txt}
我想将所有内容附加到单个文件中。
答案 0 :(得分:3)
使用Get-Content
和Add-Content
代替Copy-Item
:
Get-ChildItem $FilePath -Recurse -Include *.txt | ? {
$_.FullName -like '*folder\abc\source.txt'
} | Get-Content | Add-Content 'C:\destination.txt'
编辑:由于@BaconBits在您的问题的评论中正确指出,您不能简单地连接Word文档和文本文件,因为前者是二进制文件(包含一堆XML文件的zip存档,其实)。但是,如果您只想附加文档的(文本)内容,则可以执行以下操作:
$wd = New-Object -COM 'Word.Application'
Get-ChildItem $FilePath -Recurse | ? {
$_.Extension -eq '.docx' -or
$_.FullName -like '*folder\abc\source.txt'
} | % {
$path = $_.FullName
switch ($_.Extension) {
'.docx' {
$doc = $wd.Documents.Open($path)
$doc.Content.Text
$doc.Close()
}
'.txt' { Get-Content $path }
}
} | Add-Content 'C:\destination.txt'
$wd.Quit()
注意:我无法让Get-ChildItem
使用-Include
参数中的部分路径,因此我将这些条件移至Where-Object
过滤器。