组合多个文本文件并使用PowerShell生成新的单个文本文件?

时间:2016-10-27 13:53:28

标签: powershell powershell-v2.0 powershell-v3.0 powershell-v4.0

我在目录中有多个文本文件。如何将所有文件合并为一个并生成保存在桌面上的新单个文本文件?

3 个答案:

答案 0 :(得分:5)

这是一个解决方案,它将生成一个组合文件,其中一行用于分隔每个文件的内容。如果您愿意,可以在foreach-object循环中的“”中包含您想要的任何字符。

Get-ChildItem d:\scripts -include *.txt -rec | ForEach-Object {gc $_; ""} | out-file d:\scripts\test.txt

并且FTR无需担心将您正在创建的文件放在您正在扫描的同一目录中。它是在Get-ChildItem cmdlet在管道中运行后创建的,因此不会产生问题(尽管如果不删除它,其内容将包含在脚本的后续运行中)。

答案 1 :(得分:0)

<td>

不要将结果放在与文本文件相同的目录中,否则会得到错误的结果:)

答案 2 :(得分:0)

试试这个:

$yourdir="c:\temp\"
$destfile= ([Environment]::GetFolderPath("Desktop") + "\totalresult.txt")
Get-ChildItem $yourdir -File -Filter *.txt | %{"________________________" |out-file  $destfile -Append; $_.Name  | Out-File  $destfile -Append; gc $_.FullName | Out-File  $destfile -Append}

如果你想为标题添加文件名,你可以这样做:

declare  @Table table(ID int, EmployID varchar(10), TaxAmount int, TaxableAmount int)
insert into @Table values
(1, '1',    1,      0)
,(2, '1',    13,     1)
,(3, '3',    52,     4)


WITH cte AS(
    SELECT *,
            ROW_NUMBER() OVER(PARTITION BY EmployID ORDER BY id desc) as RN
    FROM @Table
)
DELETE cte
 WHERE RN <> 1;

SELECT * from @Table;