@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 設定壓縮程序路徑,這里用的是WINRAR的rar.exe進行打包的 set path=C:/Program Files/WinRAR rem 設定要備份的目錄 set srcDir=D:/databasc rem 設定備份文件所在目錄 set dstDir=E:/temp/backup 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天前備份文件的批處理,注:在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 "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 "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 forfiles /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命令能夠查找滿足指定條件的文件,下面是這個命令的用法。 forfiles /p <目標目錄名> /d <天數> /c <執行的命令>