我已經在Windows 7 Professional桌面上配置了Windows備份和還原功能,以便對放置在Windows Server 2012上的網絡共享進行日常備份。(順便提一下,此實用程序沒有選項可以使用當前登錄用戶的憑證,尤其是Active Directory用戶的憑證,而需要輸入固定用戶的憑證,因此在Active Directory中更改密碼時不會更新)。此實用程序也沒有任何維護機制來自動刪除舊備份版本。所以它會產生大量過時的數據,快速填滿服務器的磁盤空間。
現在,我已經在目錄結構中這樣的情況(這僅僅是一個用戶,但還有許多其他用戶的文件夾中的‘用戶’目錄):網絡共享上的桌面備份維護
Users
├─agnes.microt
│ ├─AGNES-PC
│ │ ├─Backup Set 2014-02-24 060001
│ │ │ ├─Backup Files 2014-02-24 060001
│ │ │ ├─Backup Files 2014-02-25 091044
│ │ │ ├─Backup Files 2014-02-26 092458
│ │ │ └─Catalogs
│ │ └─Backup Set 2014-02-27 091933
│ │ ++ ├─Backup Files 2014-02-27 091933
│ │ ++ └─Catalogs
我想要做的就是刪除(由在每日計劃任務中運行批處理文件)所有'備份集'文件夾,其日期早於一天,僅爲每個用戶保留最新的備份集。這將是簡單的,但也有用戶幾天沒有在公司出席。因此他們的最新備份集應該保留在服務器上,儘管它已經過時了。
我曾經做過這樣的批次:
forfiles /D -1 /P D:\User /M "Backup Set *"
/S /C "cmd /c if @ISDIR==TRUE (dir /b /a:d | find /c \"Backup Set\")
| (if not %1==\"1\" (rmdir /s /q @file))"
我不知道如何通過「目錄+發現」結果「如果」跟隨其後的命令。
任何幫助將是可觀的。以及關於這個問題/問題的任何其他開放思想的建議。
歡迎SO,但我相信你應該在這裏問你的問題在[ServerFault(HTTP: //serverfault.com/about),似乎更適合那裏。 – ztirom
這是一種比平均值更好的方法,這個問題特別關於批處理文件腳本中的語法。恕我直言,它適合S.O.不幸的是,我無法花時間找出答案。使用Unix/Linux工具集會更容易。如果你要做更復雜的事情,安裝Cygwin系統以獲得對bash/ksh/find等的訪問可能是很麻煩的。祝大家好運。 – shellter
用戶(在你的例子中)下的第二個目錄'Users> agnes.microt> AGNES-PC' - 你能否假設每個其他用戶目錄都遵循相同的格式?如果不是,它們是否至少都以'-PC'結尾,如果是,那麼該目錄中是否還有其他文件夾可能以'-PC'結尾? – unclemeat