SPFolder.MoveTo 在重置根文件夹的元数据时保留子文件夹的元数据



我有以下控制台应用程序,该应用程序将同一 SP 2013 网站集中的一些文件夹从一个文档库移动到另一个文档库:-

SPList sourceomslist = omsWeb.Lists.TryGetList("Order Management");
;
foreach (SPListItem currentItem in sourceomslist.Items)
{
if (currentItem["Status"].ToString() == "Closed")
{
if (currentItem.ContentType.Name.ToLower().Contains("project"))
{
Console.WriteLine(currentItem["ID"]);
SPFolder folder = omsWeb.GetFolder(omsWeb.ServerRelativeUrl + "/Shared Documents/"+currentItem["ID"].ToString() );
folder.MoveTo(omsWeb.ServerRelativeUrl + "/ArchDocs/"+currentItem["ID"].ToString() );
}
}
}

现在,MoveTo 将保留子文件夹和文件的元数据,但它将重置已移动的根文件夹的元数据。 那么,任何人都可以建议我是否可以强制 MoveTo 方法来保留已移动的根文件夹的元数据数据?

谢谢

由于目标库中不存在根文件夹,因此系统将首先创建,因此"修改"、"已创建"将更改为新的日期时间。我们需要在代码中修改它。

if (currentItem.ContentType.Name.ToLower().Contains("project"))
{
Console.WriteLine(currentItem["ID"]);
SPFolder folder = omsWeb.GetFolder(omsWeb.ServerRelativeUrl + "/Shared Documents/"+currentItem["ID"].ToString());
var modified = folder.Item["Modified"];
var created = folder.Item["Created"];    
folder.MoveTo(omsWeb.ServerRelativeUrl + "/ArchDocs/" + currentItem["ID"].ToString());
SPFolder tfolder = omsWeb.GetFolder(omsWeb.ServerRelativeUrl + "/ArchDocs/" + currentItem["ID"].ToString());
tfolder.Item["Created"] = created;
tfolder.Item["Modified"] = modified;
tfolder.Item.UpdateOverwriteVersion();
}