[玩转系统] 将文本转换为 HTML 已修订
作者:精品下载站 日期:2024-12-14 07:48:50 浏览:12 分类:玩电脑
将文本转换为 HTML 已修订
几年前,我发布了一个 PowerShell 函数,用于将文本文件转换为 HTML 列表。我认为将脚本转换为带有行编号和一些格式的 HTML 文档会很方便。原来真的有人用过!他对该功能有一些疑问,这促使我重新审视它并意识到需要做出一些改进。
该项目面临的部分挑战是该函数需要一个现有的文本文件并创建一个更大的文本文件。一方面,这是可以预料的,因为我们正在向其中添加 HTML。但我想找到缩小尺寸的方法。
经过一些 HTML 样式调整后,我找到了一种更好的方法来保留格式而不显着增加文件大小。我还添加了一个选项,以便您可以指定备用 CSS 文件。如果您不使用,则该函数将在 head 部分插入默认样式。我还为您提供了指定您自己的文档标题的选项。
修订后的脚本(包括定义别名)现已成为 GitHub 上的要点。
ConvertTo-HTMLListing.ps1:
#requires -version 3.0
Function ConvertTo-HTMLListing {
ConvertTo-HTMLListing -path c:\scripts\myscript.ps1 | out-file d:\MyScript.htm
Converting a single file.
.Example
PS C:\> dir c:\work\myfile.ps1 | ConvertTo-HTMLListing | Out-file d:\myfile.htm
Converting a single file using a pipelined expression.
.Example
PS C:\> foreach ($file in (dir c:\work\*.txt)) { ConvertTo-HTMLListing $file.fullname -title $file.name | Out-File D:\$($File.basename).htm }
Create an HTML file for each text file in C:\work. Use the file name for the report title.
.Example
PS C:\> ConvertTo-HTMLListing -path c:\work\myfile.txt -SkipBlankLine -NoLineNumber -CSSUri "\\web01\assets\mystyle.css" | out-file '\\Web01\Files$\myfile.htm'
Convert C:\Work\MyFile.txt to an HTML listing, skipping all blank lines, suppressing line numbers and using an external CSS stylesheet.
.Notes
Last Updated: May 6, 2016
Author : Jeff Hicks
Version : 1.3
This command was originally published at:
http://jdhitsolutions.com/blog/powershell/3966/friday-fun-text-to-html/
Learn more about PowerShell:
http://jdhitsolutions.com/blog/essential-powershell-resources/
****************************************************************
* DO NOT USE IN A PRODUCTION ENVIRONMENT UNTIL YOU HAVE TESTED *
* THOROUGHLY IN A LAB ENVIRONMENT. USE AT YOUR OWN RISK. IF *
* YOU DO NOT UNDERSTAND WHAT THIS SCRIPT DOES OR HOW IT WORKS, *
* DO NOT USE IT OUTSIDE OF A SECURE, TEST SETTING. *
****************************************************************
.Link
ConvertTo-HTML
#>
[cmdletbinding()]
Param(
[Parameter(
Position=0,
Mandatory,
HelpMessage="Enter the path to the file",
ValueFromPipeline,
ValueFromPipelineByPropertyName
)]
[Alias("PSPath")]
[ValidateScript({Test-Path $_})]
[string]$Path,
[string]$CssUri,
[ValidateNotNullorEmpty()]
[string]$Title = "File Listing",
[switch]$SkipBlankLines,
[switch]$NoLineNumber,
[switch]$NoFooter
)
Begin {
Write-Verbose -Message "Starting $($MyInvocation.Mycommand)"
if ($CssUri) {
Write-Verbose -Message "Using external stylesheet at $CSSUri"
$myStyle = ""
}
else {
#use a built-in style sheet
$myStyle = @"
body { background-color:#FFFFFF;
font-family:Consolas;
font-size:10pt;
white-space:pre; }
td, th { border:0px solid black;
border-collapse:collapse; }
th { color:white;
background-color:black; }
table, tr, td, th { padding: 0px;
margin: 0px;
white-space:pre; }
tr:nth-child(odd) {background-color: lightgray}
table { margin-left:25px; }
h2 {
font-family:Tahoma;
}
.footer
{ color:green;
margin-left:25px;
font-family:Tahoma;
font-size:8pt;
}
"@
}
Write-Verbose -message "Using title $Title"
#define the html head
$head = @"
$Title
$myStyle
"@
} #begin
Process {
$file = Resolve-Path -Path $Path
Write-Verbose "Processing $($file.providerpath)"
$body = "$($file.providerpath)
"
$content = Get-Content -Path $file
if ($SkipBlankLines) {
#filter out blank lines
Write-Verbose "Skipping blanks"
$content = $content | where {$_ -AND $_ -match "\w"}
}
Write-Verbose "Converting text to objects"
$processed = $content | foreach -begin {$i=0} -process {
#create a custom object out of each line of text
$i++
[pscustomobject]@{Line=$i;"Content"=$_}
}
Write-Verbose "Creating HTML"
#convert property headings into blanks since they don't need to be displayed
if ($NoLineNumber) {
$body+= $processed | ConvertTo-Html -Fragment -Property @{Label="";Expression={$_.Content}}
}
else {
$body+= $processed | ConvertTo-Html -Fragment -Property @{Label="";Expression={$_.Line}},@{Label="";Expression={$_.Content}}
}
if ($NoFooter) {
Write-Verbose -Message "Turning off the default footer"
$post = ""
}
else {
$post = "
$(Get-Date)"
}
#create the HTML output and write to the pipeline
ConvertTo-HTML -Head $head -Body $body -PostContent $post
} #process
End {
Write-Verbose -Message "Ending $($MyInvocation.Mycommand)"
} #end
} #end function
#define an optional alias
Set-Alias -Name chl -Value ConvertTo-HTMLListing
以下是使用默认样式表转换的文件的示例。
如果您想创建自己的样式表,请务必使用设置white-space:pre;因为这应该保留文档格式。至少能做到最好。
我希望你会发现这很有帮助。享受。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag