sharepoint - suprimir - ¿Cómo eliminar eficientemente todos los archivos en una biblioteca de documentos?
eliminar bibliotecas windows 10 (4)
Estoy buscando un ejemplo claro y completo de eliminar mediante programación todos los documentos de una biblioteca de documentos específica, a través del modelo de objetos Sharepoint. El doclib no contiene carpetas. Estoy buscando eliminar los documentos por completo (es decir, no los quiero en la Papelera de reciclaje).
Sé de SPWeb.ProcessBatchData, pero de alguna manera nunca parece funcionar para mí.
¡Gracias!
Solo tiene que revisar todos los archivos de su Biblioteca de documentos.
foreach(SPListItem item in SPContext.Current.Web.Lists["YourDocLibName"].Items)
{
//TODO: Verify that the file is not checked-out before deleting
item.File.Delete();
}
Llamar al método de eliminación en un archivo de la API no utiliza la papelera de reciclaje. Es una eliminación directa. Aún necesita verificar que el archivo no esté desprotegido.
Aquí hay alguna referencia:
Perseveraría con el enfoque ProcessBatchData, quizás esto ayude:
Vincent Rothwell ha cubierto esto mejor: http://blog.thekid.me.uk/archive/2007/02/24/deleting-a-considerable-number-of-items-from-a-list-in-sharepoint.aspx
De lo contrario, no estoy seguro de que la otra recomendación funcionará, ya que a un bucle Foreach no le gustará que la cantidad de elementos en la colección cambie con cada eliminación.
Probablemente estés mejor ubicado haciendo un ciclo inverso (no probé este código, solo un ejemplo):
for (int i = SPItems.Length - 1; i >= 0; i--)
{
SPListItem item = SPItems[i];
item.File.Delete();
}
Esta no es la forma correcta de eliminar elementos. Siga la publicación aquí http://praveenbattula.blogspot.com/2009/05/deleting-list-items-at-time-from-list.html
Forma 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)
}