-1

现有代码扫描 IIS 根及其子目录中的 .htm 文件,并生成新的 .htm 文件,其中包含指向根目录中 .htm 文件的功能超链接。根子目录中的 .htm 文件的超链接无法正常工作,因为超链接中没有包含子文件夹路径。我想修改我现有的代码,以便子文件夹中 .htm 文件的超链接也可以使用。

Get-ChildItem "c:\inetpub\wwwroot" -Recurse -Force |
  ConvertTo-Html -Fragment Name, 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"

在此处输入图像描述

4

1 回答 1

2

由于您需要在 URL 中交换 basedir(注意:这是重要的详细信息,您不应在问题中省略这些内容),这样的事情应该可以工作:

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

Get-ChildItem $basedir -Recurse -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"

附加select指令转换为表单FullName的新属性。然后将此新属性和传递的属性转换为 HTML。URLhttp://172.16.x.x/path/to/fileConvertTo-HtmlNameLastWriteTime

于 2013-07-09T16:55:58.053 回答