我有一个非常大的列表(约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库,然后删除现有的并将其导入。

许可以下: CC-BY-SA归因
scroll top