如何有效地删除所有的文件的文件图书馆?
-
05-07-2019 - |
题
我在寻找一个明确、完整示例的编程方式删除所有文件从一个具体的文件图书馆,通过Sharepoint对象的模式。该doclib不包含的文件夹。我想要删除的文件完全(即我不想让他们在回收Bin)。
我知道的SPWeb.ProcessBatchData,但不知何故,这似乎永远不会为我工作。
谢谢!
解决方案
我会坚持使用ProcessBatchData方法,也许这会有所帮助:
Vincent Rothwell 已涵盖此内容 最好: http://blog.thekid.me.uk/archive/2007/02/24/deleting-a-considerable-number-of-items-from-a-list-in-sharepoint.aspx 一>
否则我不确定其他建议是否有效,因为Foreach循环不会希望集合中的项目数随每次删除而变化。
你最好做一个反向循环(我没有测试这段代码,只是一个例子):
for (int i = SPItems.Length - 1; i >= 0; i--)
{
SPListItem item = SPItems[i];
item.File.Delete();
}
其他提示
这不是删除项目的正确方法。 在这里关注帖子 http://praveenbattula.blogspot。 COM / 2009/05 /删除列表项-AT-时间从-list.html
你只是必须要经过的所有文件文件库。
foreach(SPListItem item in SPContext.Current.Web.Lists["YourDocLibName"].Items)
{
//TODO: Verify that the file is not checked-out before deleting
item.File.Delete();
}
叫删除方法上的一个文件,从API不用回收站。这是一个直接删除。你还需要验证的文件是不是检查。
这里是一些参考:
Powershell方式:
function ProcessFolder {
param($folderUrl)
$folder = $web.GetFolder($folderUrl)
foreach ($file in $folder.Files) {
#Ensure destination directory
$destinationfolder = $destination + "/" + $folder.Url
if (!(Test-Path -path $destinationfolder))
{
$dest = New-Item $destinationfolder -type directory
}
#Delete file by deleting parent SPListItem
$list.Items.DeleteItemById($file.Item.Id)
}
}
#Delete root Files
ProcessFolder($list.RootFolder.Url)
#Delete files from Folders or Document Sets
foreach ($folder in $list.Folders) {
ProcessFolder($folder.Url)
}
不隶属于 StackOverflow