0

我想针对 IIS 根目录中的每个子文件夹运行下面的 powershell 代码。每个子文件夹内容的输出应该是单独的 .htm 文件(仅包含该子文件夹中的文件)。如果你需要我澄清我的问题,尽管问。

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

function Create-HtmlList($fldr) {
  Get-ChildItem $fldr -Force |
    select ...
    ...
  } | Set-Content "$fldr.htm"
}

# list files in $basedir:
Create-HtmlList $basedir

# list files in all subfolders of $basedir:
Get-ChildItem $basedir -Recurse -Force |
  ? { $_.PSIsContainer } |
  % {
    Create-HtmlList $_.FullName
  }
4

1 回答 1

2

您需要将文件夹遍历(递归)与文件处理(非递归)分开,例如:

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

function Create-HtmlList($fldr) {
  Get-ChildItem $fldr -Force |
    ? { -not $_.PSIsContainer } |
    select ...
    ...
  } | Set-Content "$fldr.htm"
}

# list files in $basedir:
Create-HtmlList $basedir

# list files in all subfolders of $basedir:
Get-ChildItem $basedir -Recurse -Force |
  ? { $_.PSIsContainer } |
  % {
    Create-HtmlList $_.FullName
  }

输出文件将被放入相应的文件夹(以.htm附加扩展名的文件夹命名)。如果您想要输出文件的名称或位置不同,则需要调整Set-Content函数中的行Create-HtmlList

于 2013-07-10T10:12:14.093 回答