2016-07-25 99 views
-1

我現在有一個批處理文件,其中所有文件夾大於22日後將被刪除。當批處理文件每週運行時沒有問題,根目錄中總是有4個文件夾。 但是,如果有假期,系統會關閉3周。當假期後文件正在運行時,將會刪除3個文件夾。批處理文件刪除最舊的文件夾,如果有超過3個文件夾在根

我現在正在搜索一個只有最舊的文件夾將被刪除的命令,所以我會一直保留4個文件夾進行備份。

這些文件夾被命名爲backup_YYYY-MM-DD。

感謝您查看我的問題。

+0

這不是問題,而是任務請求!如果您希望得到幫助,您需要首先展示自己的努力!我們不會爲您免費編寫代碼!請學習[如何問](http://stackoverflow.com/help/how-to-ask)! – aschipfl

+0

爲什麼這麼苛刻?我是這個論壇的新成員,我很抱歉沒有閱讀'如何閱讀'。我會盡快更新我的帖子;) – ButerBreaGrieneTsiis

回答

1

這個任務可以使用以下批處理代碼或多或少的一個命令行很容易做到:

@echo off 
for /F "skip=3 delims=" %%I in ('dir "C:\Temp\backup_*" /AD /B /O-N 2^>nul') do rd /Q /S "C:\Temp\%%I" 

命令DIR因爲/AD回報,因爲/B和裸格式只是目錄名排序由於名稱中的/O-N找到,所以在名稱C:\Temp中找到名稱backup_

按名稱的相反順序導致使用日期格式YYYY-MM-DD也按日期倒序。最新的備份文件夾首先被輸出,最後的文件夾最後被命令DIR

命令FOR跳過前3行命令DIR的輸出的,因此忽略了3個最新備份文件夾。所有其他備份文件夾由處理,對於導致用命令RD刪除它們。

命令DIR輸出錯誤消息以STDERR如果它不能找到的圖案匹配backup_*任何文件夾。通過將錯誤消息從STDERR重定向到設備NUL來抑制此錯誤消息。重定向運算符>必須在這裏用^轉義,否則Windows命令解釋程序會將>解釋爲定位錯誤的命令FOR的重定向,這將導致語法錯誤消息。

注意:命令DIR回到這裏只是備份文件夾名稱,而不路徑,因此,父文件夾的路徑必須在代碼中寫了兩次,在命令DIR,並在命令RD

爲了解所使用的命令及其工作方式,請打開命令提示符窗口,在其中執行以下命令,並仔細閱讀爲每個命令顯示的所有幫助頁面。

  • echo /?
  • dir /?
  • for /?
  • rd /?

,另請參閱Microsoft文章約Using command redirection operators

+0

謝謝。它看起來像是在發揮魅力。 下一次我將添加到我的第一篇文章,我發佈之前我嘗試過。 – ButerBreaGrieneTsiis

相關問題