Powershell:将多个 html 文件合并为一个 html 文件

Powershell: Combine multiple html files into one single html file

我想 select 并将文件夹 1 中所有 html 文件的内容合并到文件夹 2 中的单个 html 文件中。

这可以用 PowerShell 完成吗?

解决方案 1

$file = Get-ChildItem c:\Folder1\*.html
$resultsdir = "c:\Folder2\"
$files = Get-ChildItem -Path $filesdir -File *.html
  $output=@()
  $content = Get-Content -Path $file

  for($i=0;$i -lt $content.Count;$i++){
      
          if($content[$i] -notmatch ''){
              continue
          }
      
      $output += $content[$i]
  }
 
 $output | Out-File -FilePath $resultsdir$($file.name)

解决方案 2

$file = Get-ChildItem c:\Folder1\*.html
$resultsdir = "c:\Folder2\"
$files = Get-ChildItem -Path $filesdir -File *.html
  $output=@()
  $content = Get-Content -Path $file

  for($i=0;$i -lt $content.Count;$i++){
      if(($i -gt $content.IndexOf($start)) -and ($i -lt $content.IndexOf($final))){
          if($content[$i] -notmatch '<p class='){
              continue
          }
      }
      $output += $content[$i]
  }
 
 $output | Out-File -FilePath $resultsdir$($file.name)

如果你有很多文件,避免内存问题:

  1. 我建议你使用流媒体:
  2. 对于 html 文件,保持 utf8 编码,否则您可能会丢失一些字符

$rootFolder = "c:\Folder1"
$outfile    = Join-Path -Path $rootFolder -ChildPath 'newfile.html'

$sw = New-Object System.IO.StreamWriter $outfile, $true  # $true is for Append
Get-ChildItem -Path $rootFolder -Filter '*.html' -File | ForEach-Object {
    Get-Content -Path $_.FullName -Encoding UTF8 | ForEach-Object {
        $sw.WriteLine($_)
    }
}
$sw.Dispose()