none
有關資源回收筒問題 RRS feed

  • 問題

  • 本公司是使用wss3.0,現在有關資源回收筒問題。

    有同事一不小心del wss3.0內的文件庫資料夾(資料夾內有多份文件及子資料夾),我在資源回收筒是找到已delfile及資料夾。但在還原時發覺一定要先還原資料夾,之後才可以 還原資料夾內的文件。想請問有沒有其他方法直接還原文件。

    thx

    2010年6月9日 上午 02:23

解答

  • Hi soskcc,

    預設的功能可能沒辦法滿足您的需要,

    Steve.Curran 在 msdn fourm 有貼一篇文章, http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/a2fe21f2-39bc-4c9d-91f4-ed7910499336

    public static void DeleteRecycleBinContent(SPRecycleBinOrderBy orderBy, bool ascending, string siteUrl)
     {
       
    
          SPSecurity.RunWithElevatedPrivileges(delegate()
          {
            using (SPSite site = new SPSite(siteUrl))
            {
              SPRecycleBinQuery query = new SPRecycleBinQuery();
              query.ItemCollectionPosition = SPRecycleBinItemCollectionPosition.FirstPage;
              query.ItemState = SPRecycleBinItemState.FirstStageRecycleBin;
              query.RowLimit = 500;
              query.IsAscending = ascending;
              query.OrderBy = orderBy;
    
              SPRecycleBinItemCollection binItems = site.GetRecycleBinItems(query);
    
              var filteredItems = from i in binItems.OfType<SPRecycleBinItem>()
                        where i.ItemType == SPRecycleBinItemType.File && i.Title.Contains("YYY") && i.DeletedBy.LoginName == "basesmcdev2\\steve.curran"
                        select i;
    
    
              if (filteredItems != null & filteredItems.Count() > 0)
                filteredItems.First().Delete();
               
            }
          });
    
    }
    

    利用 Linq 查詢資源回收筒中某一個 site collection 被某位 user 刪除的範例程式, 您可以改寫一下, 把

    where i.ItemType == SPRecycleBinItemType.File && i.Title.Contains("YYY") && i.DeletedBy.LoginName == "basesmcdev2\\steve.curran"

    where 條件改成您要的方式, 另外 filteredItems.First().Delete(); 改成 filteredItems.First().Restore(); 就可以還原了


    This posting is provided "AS IS" with no warranties, and confers no rights.
    2010年6月11日 上午 06:54

所有回覆

  • 這種隔牆取物的功夫我是沒學過!!不知有人會嗎?
    我不甚了解!!將資料夾還原會有影響嗎?還原後取出文件、移往他處、再刪掉不就好了嗎??


    屠立剛(JosephTu)
    2010年6月9日 上午 05:27
    版主
  • 多謝你的回答,但現在的主要問題是:

    被del的資料夾內,有很多很多子資料夾,而子資料夾內也有很多很多子資料夾及file。

    我是否需要在資源回收筒內,從過百個file及資料夾中,先清楚分層次地把資料夾、子資料夾還原。之後才可還原各file。

    但要清楚分層次地把資料夾、子資料夾還原已經不是一易事。所以想問有沒有方法可以更方便還原file。

     

    thx

     

    2010年6月9日 上午 06:08
  • 了解重點了!!
    主要是因為刪掉的資料夾下有許多內容,所以要在此環境下要找到刪除資料夾下的檔案很難,是這樣嗎?


    屠立剛(JosephTu)
    2010年6月9日 上午 06:14
    版主
  • Hi soskcc,

    預設的功能可能沒辦法滿足您的需要,

    Steve.Curran 在 msdn fourm 有貼一篇文章, http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/a2fe21f2-39bc-4c9d-91f4-ed7910499336

    public static void DeleteRecycleBinContent(SPRecycleBinOrderBy orderBy, bool ascending, string siteUrl)
     {
       
    
          SPSecurity.RunWithElevatedPrivileges(delegate()
          {
            using (SPSite site = new SPSite(siteUrl))
            {
              SPRecycleBinQuery query = new SPRecycleBinQuery();
              query.ItemCollectionPosition = SPRecycleBinItemCollectionPosition.FirstPage;
              query.ItemState = SPRecycleBinItemState.FirstStageRecycleBin;
              query.RowLimit = 500;
              query.IsAscending = ascending;
              query.OrderBy = orderBy;
    
              SPRecycleBinItemCollection binItems = site.GetRecycleBinItems(query);
    
              var filteredItems = from i in binItems.OfType<SPRecycleBinItem>()
                        where i.ItemType == SPRecycleBinItemType.File && i.Title.Contains("YYY") && i.DeletedBy.LoginName == "basesmcdev2\\steve.curran"
                        select i;
    
    
              if (filteredItems != null & filteredItems.Count() > 0)
                filteredItems.First().Delete();
               
            }
          });
    
    }
    

    利用 Linq 查詢資源回收筒中某一個 site collection 被某位 user 刪除的範例程式, 您可以改寫一下, 把

    where i.ItemType == SPRecycleBinItemType.File && i.Title.Contains("YYY") && i.DeletedBy.LoginName == "basesmcdev2\\steve.curran"

    where 條件改成您要的方式, 另外 filteredItems.First().Delete(); 改成 filteredItems.First().Restore(); 就可以還原了


    This posting is provided "AS IS" with no warranties, and confers no rights.
    2010年6月11日 上午 06:54