我在PowerShell中有一个脚本,它创建一个HTML文件,其中包含特定类型的文件列表(例如“.txt”)及其中的一些基本信息。现在我想添加一个功能,可以单击脚本创建的HTML页面中的文件名以打开它。任何人都至少可以暗示如何做到这一点吗?这是我收到的当前输出(虽然我模糊了文字):
以下是我正在使用的脚本(来自alroc对此问题的回答:Write multiple objects obtained via get-ChildItem into HTML):
$types=@("*.txt", "*.pdf")
$myfiles = @();
foreach($type in $types){
$myFiles += Get-ChildItem C:\POWERSHELL -Filter $type -Recurse
}
$myfiles | ConvertTo-Html -property fullname,lastwritetime,length | out-file c:\status23.html;
答案 0 :(得分:3)
要创建指向该文件的可点击链接,您需要使用此类HTML标记:
<a href='file:///filename'>Display Text</a>`
但是,如果要更改HTML,则不能像在引用的脚本中那样使用 ConvertTo-Html ,因为该cmdlet将转义您提供的任何输入,因此您需要自己创建HTML。对于一个简单的表,它并不难,它可以让你更好地控制输出的样子。
试试这个(除了添加HTML输出之外,我还压缩了你的代码):
$output = "<html>`n<table>`n<tr><th align='left'>Full Name</th><th align='left'>Last Write Time</th><th align='right'>Size (bytes)</th></tr>`n"
Get-ChildItem '*.txt','*.ps1' -Recurse | %{
$output += "<tr><td><a href='file:///$($_.FullName)'>$($_.FullName)</a></td><td>$($_.LastWriteTime)</td><td align='right'>$($_.Length)</td></tr>`n"
}
$output += "</table>`n</html>"
$output | Out-File status23.html
一些注意事项:
`n
并非绝对必要,它们只会使得到的HTML文件更具可读性;如果您将页面遗漏,页面将呈现相同的颜色。答案 1 :(得分:0)
首先,您需要将它们包装在带有文件路径的html href标记中。
如果他们有权访问该txt文件,并且他们使用浏览器查看html文件,则单击时该文本文件将在浏览器中打开。
示例:
$file="C:\test\to.txt"
"<HTML><a href=`"$file`">$file</a></HTML>" | Out-file "C:\test\test.html"