我需要从许多文件中删除相同的html代码。我试着编写一个PowerShell脚本,但它没有用。
$htmlFiles = Get-ChildItem . *.html -rec
$old = '<form method="GET" action="http://localhost/index.php" name="head2">`r`n
<input type="hidden" name="akcja" value="szukaj">`r`n
<input type="hidden" name="ind" value="0" >`r`n
`r`n
<table border="0" cellpadding="1" cellspacing="0" style="margin-left:11px" >`r`n
`r`n
SOME MORE CODE
`r`n
</table>`r`n
`r`n
</form>'
$new = ""
foreach ($file in $htmlFiles)
{
(Get-Content $file.PSPath) |
Foreach-Object { $_ -replace $old, $new} |
Set-Content $file.PSPath
}
我使用了很多`r`n,因为我在html文件中也有这个。也许我需要用正则表达式做这个,但50多行的正则表达式对我来说太过分了。 我认为脚本不起作用,因为空格不匹配。如何使它工作?
我的脚本运行但对文件没有影响 PS。它需要在Windows上工作
答案 0 :(得分:1)
同意使用here-string,但您正在进行多行替换。这意味着您需要将HTML检索为单个多行字符串并使用多行正则表达式。
这适用于您的应用程序吗?
$htmlFiles = Get-ChildItem . *.html -rec
$regex =
@'
(?ms)\s*<form method="GET" action="http://localhost/index.php" name="head2">\s*
.+?
\s*</form>\s*
'@
$new = ''
foreach ($file in $htmlFiles)
{
(Get-Content $file.PSPath -raw) -replace $regex,$new |
Set-Content $file.PSPath
}
答案 1 :(得分:0)