用批處理文件自動備份文件及文件夾并自動刪除n天前的文件_第1頁
用批處理文件自動備份文件及文件夾并自動刪除n天前的文件_第2頁
用批處理文件自動備份文件及文件夾并自動刪除n天前的文件_第3頁
用批處理文件自動備份文件及文件夾并自動刪除n天前的文件_第4頁
用批處理文件自動備份文件及文件夾并自動刪除n天前的文件_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、用批處理文件自動備份文件及文件夾,并自動刪除n天前的文件主要是利用Windows的腳本功能來計算要刪除文件的截止日期,然后for加dir命令來提取文件的日期進行判斷下是備份的批處理,添加到"計劃任務"中,設定時間自動運行 復制代碼 代碼如下:echo off rem 格式化日期 rem date出來的日期是"2006-02-22 星期三",不能直接拿來使用,所以應該先格式化一下 rem 變成我們想要的。date:0,4的意思是從0開始截取4個字符 set d=%date:0,4%date:5,2%date:8,2% rem 設定壓縮程序路徑,這里用的是W

2、INRAR的rar.exe進行打包的 set path=C:Program FilesWinRAR rem 設定要備份的目錄 set srcDir=D:databasc rem 設定備份文件所在目錄 set dstDir=E:tempbackup rem 設定備份文件的前綴,目前為temp,前綴為backup set webPrefix= rem 如果文件不存在,開始備份 if not exist %dstDir%webPrefix%d%.rar start Rar a -r %dstDir%webPrefix%d%.rar %srcDir% echo on 以下是刪除N天前備份文件的批處理,

3、注:在windows2003下,如XP下因為沒有forfiles.exe,未測試拷貝2003的文件到XP的system32目錄 刪除在C盤backup目錄下最后修改日期在10天前的文件 = forfiles /p "c:backup" /d -10 /c "cmd /c echo deleting file . && del /f path" = 以下是復制某天前文件到其它位置的批處理 要把在C盤根目錄下最后修改日期大于或等于2007年7月1日的文件復制到D盤根目錄下 = forfiles /p "c:" /d &qu

4、ot;2007-7-1" /c "cmd /c copy path d:" Windows Server 2003內置的命令行文件,適合于XP以上系統 示例: forfiles /m *.bkf /d -28 /c "cmd /c del file /f" 刪除當前目錄下28天以前的擴展名為bkf文件(以當前系統時間為基準) forfiles 自動刪除7天前文件 delete 2008-09-12 15:01 用forfiles.exe試試。 forfiles /p "d:test" /s /m *.* /d -7 /c &

5、quot;cmd /c del path" 做成批處理文件,bat文件與forfiles.exe同一目錄下,建一個bat文件的快捷方式在啟動。 d:test換成你要的目錄路徑。日期是指修改的日期。 附上forfiles.exe及幫助。 刪除所有的空目錄(以刪除d:test目錄下為例) dir /ad/b/s d:test |sort /r >d:kill.txt For /f "tokens=*" %i in (d:kill.txt) DO rd "%i" del d:kill.txt 把以下復制到bat文件中。 echo off for

6、files /p "d:test" /s /m *.* /d -7 /c "cmd /c del path" dir /ad/b/s d:test |sort /r >d:kill.txt For /f "tokens=*" %i in (d:kill.txt) DO rd "%i" del d:kill.txt 先刪過期文件,再刪所有的空目錄 如果操作系統是 Windows Server 2003 那就好辦了,因為它有一個forfiles命令能夠查找滿足指定條件的文件,下面是這個命令的用法。 forfile

7、s /p <目標目錄名> /d <天數> /c <執行的命令> 看看列出的三個參數都有什么用處: /p 指定了要在哪個目錄里查找文件,默認是當前工作目錄。 /d 指定一個日期或天數,用于比較文件的最后修改日期是否符合條件。 /c 對每個找到的文件執行的命令。 例1.要把在C盤根目錄下最后修改日期大于或等于2007年7月1日的文件復制到D盤根目錄下: forfiles /p "c:" /d "2007-7-1" /c "cmd /c copy path d:" 例2.刪除在C盤backup目錄下最后修

8、改日期在10天前的文件: forfiles /p "c:backup" /d -10 /c "cmd /c echo deleting file . && del /f path" 先看刪除文件的代碼 forfiles /p 包含要刪除文件的完整路徑(如:F:Logfiles) /m *.log -d -7 /c "cmd /c del /f path" 解釋一下相關參數及命令 /p <Path> : 指定開始搜索文件的位置,如果不指定則默認為當前目錄。 /m <SearchMask> : 文件

9、查找所使用的通配符如代碼中的"*.log"則為所有日志文件,當然也可以指定諸如"manmee_*.log"這樣以manmee開頭的所有日志文件。如果不指定此參數則默認為"*.*"。 /d +|-<Date>|<Days> : 指定想選擇文件的最后修改時間,上文中用了 "/d -7" 表示所有以當天為基礎,7天以前的文件。當然這里還可以指定具體時間,例如:"/d -08/18/2009"這樣所有早于2009年8月18日的文件。注意指定的時間必須是"MM/DD/YY

10、YY"的格式。 /c 對所有文件以此執行指定的命令,命令體須在雙引號(")內,默認是"cmd /c echo file"。上文中用到的是"cmd /c del /f path"刪除指定文件。(這里的file 和 path 為變量,下文中將解釋。) 下面說一下上文中用到的參數: PATH : 表示文件的完整的路徑。 File : 表示文件名稱。 其他參數的詳細介紹點擊這里。 接下來我們看看刪除文件夾的操作,如果你看了上面的介紹,相信這命令你一看就能看懂。 forfiles /p 包含文件夾的路徑(如:F:) /m 文件夾名稱(如:Log

11、Files) -d 0 /c "cmd /c if ISDIR = true rd /s/q path" 注意這里的"包含文件夾的路徑"不能包含要刪除的文件夾,如以上代碼所表示的就是,在F盤中查找名為LogFiles的文件或文件夾(不能指定查找文件夾,不過在刪除時我們做了判斷)。 還有就是這里出現了一個新的參數"ISDIR"他用于判斷當前文件類型是否是"文件夾類型",如果是則為true否則為false。 相信到這大家就明白了,最后再將代碼保存為批處理文件,然后加入計劃任務定期執行即可。 看了上面的例子,覺得在 Wi

12、ndows Server 2003 下面要刪除老文件很簡單吧。 但如果操作系統是 Windows 2000/XP 就比較麻煩,因為它們沒有forfiles命令,只能靠自己寫批處理來實現了。 下面是我寫的批處理文件內容: 復制代碼 代碼如下:echo off rem * rem * 按時間刪除文件目錄的批處理 * rem * rem 設置臨時目錄的路徑 set tempDir=%tmp%remove_%date:0,10% if not exist %tempDir% md %tempDir% rem 設置處理日期的腳本文件的路徑 set scriptFile=%tempDir%get_date

13、.vbs rem 獲得要保留的天數 set days=%1 if "%days%" = "" goto printUsage rem 獲得目標目錄的路徑 set dirPath=%2 if "%dirPath%" = "" set dirPath=. rem 獲得要操作的文件形式 set fileSpec=%3 if "%fileSpec%" = "" set fileSpec=*.* rem 生成計算日期的腳本文件并獲得刪除的截止日期 echo d=date()-%1 &g

14、t; %scriptFile% echo s=right("0000" & year(d),4) & "-" & right("00" & month(d),2) & "-" & right("00" & day(d),2) >> %scriptFile% echo wscript.echo s >> %scriptFile% for /f %i in ('cscript /nologo %scriptFil

15、e%') do set lastDate=%i rem 處理目標目錄里的每個對象 for /f "tokens=1,2,3* delims=<> " %i in ('dir "%dirPath%fileSpec%" /a /-c /tc') do call :proc "%i" "%j" "%k" "%l" goto :done rem 處理目標目錄里對象的過程 :proc rem 獲得對象的創建日期并判斷是否為有效格式 set fileD

16、ate=%1 echo %fileDate% | findstr "0-90-90-90-9-0-90-9-0-90-9" > nul if errorlevel 1 goto end rem 獲得對象的類型 set fileType=%3 if "%fileType%" = "" goto end rem 獲得對象的名稱 set fileName=%4 if "%fileName%" = "" goto end if "%fileName%" = ".&qu

17、ot; goto end if "%fileName%" = "." goto end if "%fileName%" = "字節" goto end if "%fileName%" = "可用字節" goto end rem 判斷對象日期是否小于或等于刪除的截止日期 if "%fileDate:0,10%" leq "%lastDate%" ( echo deleting "%fileName%" . if "%fileType%" = "DIR" ( rd /s /q "%dirPath%fileName%" ) else ( del /q /f "%dirPath%fileName%" ) ) goto end :error echo An error

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論