处理文本文件并将其内容写入HTML输出

时间:2016-07-19 09:05:39

标签: powershell

大家好我已编写以下代码将文本文件内容导出为HTML格式的输出,但我没有得到预期的结果可以帮助我

function TextToHtml {
    $SourceFile = "C:\sample.txt"
    $TargetFile = "C:\TestOutput.htm"

    $TextData = Get-Content $SourceFile

    foreach ($Line in $TextData) {
        $LineData = $FileLine + $Line
    }

    $LineData | ConvertTo-HTML | Out-File $TargetFile
}

enter image description here

2 个答案:

答案 0 :(得分:2)

ConvertTo-Html对象属性转换为列表或表中的值。字符串只有一个属性Length - 这就是您在输出中看到的值。

使用$LineData作为属性值创建一个新对象,您将获得有意义的输出

function TextToHtml
{
    $SourceFile = "C:\sample.txt"
    $TargetFile = "C:\TestOutput.htm"

    $TextData = Get-Content $SourceFile

    Foreach ($Line in $TextData) {
      $LineData = $LineData + $Line
    }
    New-Object psobject -Property @{Text = $LineData} | ConvertTo-HTML -Property Text | Out-File $TargetFile

}

要使您的函数更具可重用性,请将源文件路径和目标文件路径转换为参数。

您也不需要遍历$TextData中的每个字符串以将它们相互追加,只需使用-join运算符:

function TextToHtml
{
    param(
        [string]$SourceFile = "C:\sample.txt",
        [string]$TargetFile = "C:\TestOutput.htm"
    )

    $TextData = Get-Content $SourceFile

    $LineData = $TextData -join ''

    New-Object psobject -Property @{Text = $LineData} | ConvertTo-HTML | Out-File $TargetFile

}

如果要避免只有一个属性的对象的*标头,请使用-Property参数和ConvertTo-Html明确选择Text属性:

ConvertTo-Html -Property Text

如果要在其自己的表行中显示每一行,请跳过串联并将字符串直接传送到ConvertTo-Html

function TextToHtml
{
    param(
        [string]$SourceFile = "C:\sample.txt",
        [string]$TargetFile = "C:\TestOutput.htm"
    )

    Get-Content $SourceFile | ConvertTo-HTML -Property @{Label='Text';Expression={$_}} | Out-File $TargetFile

}

答案 1 :(得分:0)

如果我们只使用上面问题中粘贴的代码。它将为您提供$ FileLine的值(此处为null或空白)以及该文件中最后一行的文本。

但是如果你想要所有的行也使用下面的代码:

function TextToHtml
{
    $SourceFile = "C:\sample.txt"
    $TargetFile = "C:\TestOutput.htm"
    $TextData = Get-Content $SourceFile

    Foreach ($Line in $TextData) {
      $LineData = $FileLine + $LineData + $Line
    }
   $LineData | ConvertTo-HTML | Out-File $TargetFile

}