首页 > 解决方案 > 无法将内容输出到带有换行符的文本文件

问题描述

我正在使用out-file将内容发送到文本文件,即使它通常会在一行接一行之间放置换行符,但在这种情况下不会发生。

输出如下所示:

苹果球国

我期待它如下

苹果
球
国家

下面是我正在使用的代码片段,请忽略变量(因为这只是一个正在进行的工作)。

foreach ($li in $bin) {
    $list2 = $list1 | Where-Object {$_ -like $li}
    #$list2 #| out-file info2.txt
    foreach ($li2 in $list2) {
        $li3 += $li2 | where-object {$_ -like $li -and $_ -like "*Error*"} 
        $li3 | out-file info2.txt # it's this part that I am not able to get to 
        #the text file with line breaks
        break
    }        
}

一般来说,我刚开始使用 powershell 和堆栈溢出,并且知道我可能不会在这里提供全部信息。

另外,我现在无法提供 powershell 版本,因为我不知道该怎么做。

标签: powershell

解决方案


您的问题不在于out-file您的$li3 string.

当您这样做时,+=PowerShell 只会将这些词混合在一起,而不是将它们视为单独的对象。

您可以做的是添加where-object到您的foreach语句,并手动分配一个新行。

foreach ($li in $bin)
{
$list2 = $list1 | Where-Object {$_ -like $li}
foreach ($li2 in $list2 | Where-Object {$_ -like $li -and $_ -notlike "Error"})
{
$li3 += $li2 + "`r`n"
$li3 | out-file info2.txt
break
}
}

out-file移动到循环之外也可能是一个好主意。


推荐阅读