如何修改Powershell代码,以便只为文件而不是目录创建超链接?

时间:2013-07-11 09:04:43

标签: html powershell hyperlink

我正在使用下面的代码生成Index.htm页面。代码工作得很好,但我在Index.htm页面中唯一不想要的就是拥有目录的超链接,因为它们没用。 Index.htm应仅包含指向 C:\ inetpub \ wwwroot 内的.htm文件的超链接。关于如何实现这样的结果的任何建议?

$basedir = 'C:\inetpub\wwwroot'
$exp     = [regex]::Escape($basedir)
$server  = 'http://172.16.x.x'

Get-ChildItem $basedir -Force |
  select Name, LastWriteTime, 
    @{n="URL";e={$_.FullName -replace $exp, $server -replace '\\', '/'}} |
  ConvertTo-Html -Fragment URL, Name, LastWriteTime `
    -PreContent '<html><head><title>Test</title></head><body>' `
    -PostContent '</body></html>' |
  % { $_ -replace '<th>.*</th>','<th>Files</th>' `
         -replace '<td>(.*?)</td><td>(.*?)</td><td>(.*?)</td>',
                  '<td><a href="$1">$2</a> $3</td>'
  } | Set-Content "c:\inetpub\wwwroot\index.htm" 

2 个答案:

答案 0 :(得分:3)

您可以通过以下方式过滤掉文件夹:

Get-ChildItem $basedir -Force | ? { -not $_.psiscontainer } | ... rest of your code ...
在PowerShell V3中

Get-ChildItem $basedir -Force -file | ... rest of your code ...

答案 1 :(得分:2)

C.B.说的是什么。另一个选项,因为您只想要.htm个文件,会在Get-ChildItem中过滤这些文件:

Get-ChildItem $basedir -Filter "*.htm" -Force | ...