工作中,往往備份的數據很多,有時候把磁盤都干沒了,系統無法運行了才知道空間沒了,所有我們需要定期清理過期的備份數據,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.
我們可以在機器上創建一個定時計划任務,每天自行執行腳本判斷清理過期的備份數據。
- 開始-->所有程序-->附件-->系統工具-->任務計划程序
- 任務計划程序(本地)-->任務接話程序庫-->創建基本任務-->
- 輸入 名稱: 描述:點擊下一步
- 觸發器:設置周期
- 設置詳細時間
- 操作選擇 啟動程序
- 選擇要執行的bat腳本就是上面所寫好的腳本
- 點擊完
注:驗證是否能夠成功執行計划任務,在計划任何的執行界面中配置的啟動時間提前當前時間2分鍾,待顯示上次成功執行(0X0返回碼表示成功執行)以后確認定時任務可以成功執行。