题
我有一个非常大的列表(约5000个文件),这已经持续了大约一年。它已经打开了版本功能,并具有主要版本,可保留2个旧版本。我们正在完全重组文档库(在另一个问题中详细介绍),我想简单地摆脱整个旧版本以清理图书馆并重新获得空间。
我已经关闭了版本,但是当我认为应该这样做时,版本不会消失。有什么想法吗?重要的是要注意的是我继承了文档库。这在几种方面有些奇怪,我不确定它是如何创建的。
解决方案 4
现在我年纪大了,更聪明了,我可以通过编写客户端脚本来解决这一问题。使用 SPServices, ,我本可以通过文档库中的所有项目进行循环,并打电话给 deleteallvers 每个。这是编写代码来执行此操作的“无代码”。
其他提示
不幸的是,我想不出一种非编程方法的方法,我快速查看了这一点,并创建了一些示例代码以遍历并删除版本(这取决于最新版本,但它依赖于发布的最新版本) :
using (SPSite site = new SPSite("http://yourserver/sites/site"))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Test Doc Library"];
foreach (SPListItem item in list.Items)
{
SPListItemVersionCollection versionCol = item.Versions;
int count = versionCol.Count;
int j = 0;
for (int i = 1; i < count; i++)
{
if (versionCol[i].VersionId != versionCol[j].VersionId)
{
SPListItemVersion version = versionCol[i];
version.Delete();
count = item.Versions.Count;
}
}
}
}
}
但是,代码通过良好运行,但该版本实际上并不能正常消失,我认为您还必须使用Spfileversion Collection进行一些操作,因为它是文档库。无论如何,这都应该让您入门,让我知道您的情况。
干杯
不确定是否有一种使用Web服务写入创建/创建的字段的方法,但是您可以编写使用Web服务并将所有内容保存到本地计算机的导出应用程序(对于二进制数据 +元数据)。还要编写一个导入应用程序,该应用将文件上传到新的Doclib中(可以上传到单独的文件夹中,解决其他问题中提出的问题)并重新应用元数据。
例如,如果您有100个文档版本,然后将版本控制限制为最后2个版本,则前98个版本不会消失,除非您插入新版本。
清理图书馆中每个文档的这些旧版本的一种简单方法是导出subsite的内容(在站点级别上的STSADM导出作品,而不是库级别),该版本参数= 1仅导出最后一个版本。然后,您可以删除此站点并将其导入,从而摆脱所有早期版本。 STSADM出口文档可以在此处找到(http://technet.microsoft.com/en-us/library/cc262759.aspx )
另一个选项(简单的上述变体)是使用内容部署向导(http://spdeploymentwizard.codeplex.com/ ),您需要在没有版本的情况下导出DOC库,然后删除现有的并将其导入。