从PowerShell中创建的HTML文件中打开文件

时间:2013-11-21 21:29:11

标签: html powershell

我在PowerShell中有一个脚本,它创建一个HTML文件,其中包含特定类型的文件列表(例如“.txt”)及其中的一些基本信息。现在我想添加一个功能,可以单击脚本创建的HTML页面中的文件名以打开它。任何人都至少可以暗示如何做到这一点吗?这是我收到的当前输出(虽然我模糊了文字): How my current output looks like

以下是我正在使用的脚本(来自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;

2 个答案:

答案 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

一些注意事项:

  • 您不必担心HTML转义插值,因为您所包含的属性(FullName,LastWriteTime,Length)都不能包含任何需要在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"