2013-11-21 63 views
0

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

这里是我使用的脚本(从alroc的回答这个问题:Write multiple objects obtained via get-ChildItem into HTML):

[email protected]("*.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

顺便说一句,如果你还显示PowerShell脚本,我们可能会帮助你更好。 – hjpotter92

+0

我使图像更清晰。 powershell脚本就像先生那样。 alroc发布在我的其他线程:http://stackoverflow.com/questions/19911713/write-multiple-objects-obtained-via-get-childitem-into-html不幸的是,我所有的其他修改没有导致任何好处:( – Max

回答

3

为了使一个可点击的链接到该文件,你需要使用这种HTML标记的:如果你想改变HTML

<a href='file:///filename'>Display Text</a>` 

然而, ,因为该cmdlet将转义您提供的任何输入,所以您不能使用ConvertTo-Html,因此您需要自己创建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 s不是绝对必要的,它们只是使得生成的HTML文件更具可读性;如果您将它们排除在外,该页面将呈现相同的状态。
0

开始,你需要将它们包装在一个带有文件路径的html href标签中。

如果他们有权访问该txt文件,并且他们正在使用浏览器查看该html文件,则该文本文件将在浏览器中单击时打开。

例子:

$file="C:\test\to.txt" 

"<HTML><a href=`"$file`">$file</a></HTML>" | Out-file "C:\test\test.html" 
+0

不过,它可能不仅仅是一个.txt文件,而是.pdf或.doc – Max

+2

无论扩展名如何,浏览器都会根据配置的方式来打开文件,如果它是PDF,那么浏览器应该启动PDF阅读器,如果这是它的设置 – malexander

+1

请注意,你不能只使用一个文件名作为href值href必须是一个有效的URL,它可以是相对于当前页面的,也可以是有效的方案标识符对于本地文件系统上的文件,即'file:///'。将Windows路径本身用作href值会导致出现错误的链接抱怨“C”不是有效的协议,或者类似的东西。 –