2013-11-21 62 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」不是有效的協議,或者類似的東西。 –