你们要救我 我应该进入 70 多个 SharePoint 2013 页面并手动将每个页面的 html 中的 3 个以上链接替换为正确的复制版本。如,当前所有链接都指向 /place1/place2/link,现在它们需要是 /place3/place4/link
所以,必须有一种方法可以批量编辑所有页面,比如查找和替换,否则我只会坐在角落里哭几个小时。我无法编辑文件夹结构,因为我不是项目负责人。
我会尽一切努力保持我的理智。
你们要救我 我应该进入 70 多个 SharePoint 2013 页面并手动将每个页面的 html 中的 3 个以上链接替换为正确的复制版本。如,当前所有链接都指向 /place1/place2/link,现在它们需要是 /place3/place4/link
所以,必须有一种方法可以批量编辑所有页面,比如查找和替换,否则我只会坐在角落里哭几个小时。我无法编辑文件夹结构,因为我不是项目负责人。
我会尽一切努力保持我的理智。
你可以使用powershell。从这个问题:
function ProcessWeb($currentWeb)
{
if([Microsoft.SharePoint.Publishing.PublishingWeb]::IsPublishingWeb($currentWeb))
{
$publishingWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($currentWeb)
$publishingPages = $publishingWeb.GetPublishingPages()
foreach ($publishingPage in $publishingPages)
{
if($publishingPage.ListItem.File.CheckOutStatus -eq "None")
{
UpdatePage -page $publishingPage
}
}
Write-Host -ForegroundColor red "FINISHED"
}
else
{
Write-Host -Foregroundcolor Red "^ not a publishing site"
}
}
function UpdatePage($page)
{
$page.CheckOut();
Write-Host -Foregroundcolor green $page.Url;
$NewPageContent = $page["PublishingPageContent"].Replace("/place1/place2/link","/place3/place4/link");
$page["PublishingPageContent"] = $NewPageContent
$page.ListItem.Update();
$page.CheckIn("nothing");
$page.ListItem.File.Approve("Updated PublishingPageContent to replate place1/place2 with place3/place4");
}
ProcessWeb(Get-SPWeb -identity http://myintranet.com)
请注意,您需要弄清楚一个好的替换语句将如何工作。此外,这会自动执行可能出错的更改,因此请确保先在 dev/uat 环境中执行此操作,然后再在生产环境中备份内容数据库,然后再试一试。