在Powershell中使用add-content时的格式化

时间:2015-03-19 17:28:32

标签: powershell

我正在尝试将文件夹中的所有文本文件合并到一个csv文件中,每个文本文件的名称都在新文件中的内容之上。我希望它像这样出来(在合并之前的文本文件中,文本出现在下面的列表中,所以我希望文本以与文本文件中存在的相同方式出现在csv文件中):

textfile1.txt

-content content

-content content

-content content

textfile2.txt:

-content content

-content content

-content content

textfile3.txt:

-content content

-content content

-content content

然而,它目前正是这样出现的:

textfile1.txt:

content content content content content content

textfile2.txt:

content content content content content content

textfile3.txt:

content content content content content content

我的代码是:

dir "C:\text files\*.*" | ForEach {
$variable = "$($_.Name)`n$(Get-content $_.FullName)" |Add-Content
"C:\text files\output\output.csv"}

如果有人可以帮我格式化Add-Content所以它不会将整个文件分组成一个字符串,我会非常感激!

1 个答案:

答案 0 :(得分:0)

再来一次!

这实际上是一个非常简单的修复方法。我们获取文件名并将其添加到文件中,然后获取文件内容并添加它们,因此总代码如下所示:

dir "C:\text files\*.*" | ForEach {
  Add-Content -value $_.Name -Path .\Output.txt
  Get-Content  $_.FullName | Add-Content -Path .\Output.txt
}

结果?

TextFile1.txt
-content content

-content content

-content content
TextFile2.txt
-content content

-content content

-content content
TextFile3.txt
-content content

-content content

-content content

现在,如果您想添加一些注释或明确新文件的开头位置,该怎么办?我们只是将第2行的Add-Content行更改为类似Add-Content -value "---FileName: $($_.Name)------" -Path .\Output.txt的内容,为我们提供如下输出:

---FileName: TextFile1.txt------
-content content

-content content