大家好我已编写以下代码将文本文件内容导出为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
}
答案 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
}