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)
如果你有很多文件,避免内存问题:
- 我建议你使用流媒体:
- 对于 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()
我想 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)
如果你有很多文件,避免内存问题:
- 我建议你使用流媒体:
- 对于 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()