Windows 刪除指定N天前的文件


工作中,往往備份的數據很多,有時候把磁盤都干沒了,系統無法運行了才知道空間沒了,所有我們需要定期清理過期的備份數據,Windows下bat批處理,自動獲取文件的最后修改時間,然后將指定多少天之前的文件刪除,需要Windows支持forfiles命令,XP及以上系統都自帶forfiles命令;詳情如下:

1.在本地新建一個del.txt,將一下代碼復制進去, 然后將擴展名改為bat格式。

@echo 刪除指定路徑下指定N天前的文件  
@echo off
@echo.----------------------------------------------------------------------
@echo.**********************************************************************
@echo.   溫馨提醒:
@echo.      1.以管理員身份運行
@echo.      2.以文件的最后修改日期為准
@echo.      3.需要系統自帶的forfiles命令的支持
@echo.      4.使用時請先測試,刪除的數據不可恢復
@echo.      5.如果測試結果無誤,把del前面的echo去掉,即可實現真正刪除
@echo.----------------------------------------------------------------------
@echo.

rem 指定待刪除文件的存放路徑
set SrcDir=E:\test
rem 指定幾天前的文件
set DaysAgo=7
@echo.----------------------------------------------------------------------
@echo 正在掃描 %SrcDir%路徑下%DaysAgo%天前的備份文件......

rem 下面命令為真正刪除符合條件的文件日志記錄
forfiles /p %SrcDir% /s /m *.* /d -%DaysAgo% /c "cmd /c echo  正在刪除 del /f /q /a  @path"  >>./%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%%time:~0,2%%time:~3,2%.log

@echo.
@echo 正在刪除文件中......

rem 下面命令為真正刪除符合條件的文件且不可恢復
forfiles /p %SrcDir% /s /m *.* /d -%DaysAgo% /c "cmd /c echo del /f /q /a  @path"  
@echo 刪除已完成,若想查看具體刪除了哪些文件請看本地刪除日志
@echo.
pause exit

測試如下:

我們需要刪除E:\test路徑下7天前的所有文件

 

 執行del.bat結果如下:

我們再看看文件下是否真正刪除了符合條件的:

 

is ok !

如果需要備份+刪除的批處理文件的話,只需要在上邊代碼倒數第二行中添加一個備份命令即可。

如下:

@echo 正在備份數據中......
EXPDP 用戶/密碼@數據庫IP/實例名 schemas=用戶 directory=DATA_PUMP_DIR dumpfile=BDCDJ%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%%time:~0,2%%time:~3,2%.dmp logfile=BDCDJ%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%%time:~0,2%%time:~3,2%.log
@echo 數據備份已完成!
@echo.

我們可以在機器上創建一個定時計划任務,每天自行執行腳本判斷清理過期的備份數據。

  1.  開始-->所有程序-->附件-->系統工具-->任務計划程序
  2.  任務計划程序(本地)-->任務接話程序庫-->創建基本任務-->
  3.  輸入 名稱:  描述:點擊下一步
  4.  觸發器:設置周期
  5.  設置詳細時間
  6.  操作選擇 啟動程序
  7.  選擇要執行的bat腳本就是上面所寫好的腳本
  8.  點擊完
注:驗證是否能夠成功執行計划任務,在計划任何的執行界面中配置的啟動時間提前當前時間2分鍾,待顯示上次成功執行(0X0返回碼表示成功執行)以后確認定時任務可以成功執行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM