佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 用批處理文件自動(dòng)備份文件及文件夾,并自動(dòng)刪除n天前的文件

用批處理文件自動(dòng)備份文件及文件夾,并自動(dòng)刪除n天前的文件

熱門標(biāo)簽:呼叫中心市場(chǎng)需求 智能手機(jī) 銀行業(yè)務(wù) 網(wǎng)站文章發(fā)布 美圖手機(jī) 鐵路電話系統(tǒng) 檢查注冊(cè)表項(xiàng) 服務(wù)器配置
下是備份的批處理,添加到"計(jì)劃任務(wù)"中,設(shè)定時(shí)間自動(dòng)運(yùn)行
復(fù)制代碼 代碼如下:

@echo off
rem 格式化日期
rem date出來(lái)的日期是"2006-02-22 星期三",不能直接拿來(lái)使用,所以應(yīng)該先格式化一下
rem 變成我們想要的。date:~0,4的意思是從0開(kāi)始截取4個(gè)字符
set d=%date:~0,4%%date:~5,2%%date:~8,2%
rem 設(shè)定壓縮程序路徑,這里用的是WINRAR的rar.exe進(jìn)行打包的
set path=C:\Program Files\WinRAR
rem 設(shè)定要備份的目錄
set srcDir=D:\databasc
rem 設(shè)定備份文件所在目錄
set dstDir=E:\temp\backup
rem 設(shè)定備份文件的前綴,目前為temp,前綴為backup
set webPrefix=
rem 如果文件不存在,開(kāi)始備份
if not exist %dstDir%%webPrefix%%d%.rar start Rar a -r %dstDir%%webPrefix%%d%.rar %srcDir%
@echo on


以下是刪除N天前備份文件的批處理,注:在windows2003下,如XP下因?yàn)闆](méi)有forfiles.exe,未測(cè)試拷貝2003的文件到XP的system32目錄
刪除在C盤backup目錄下最后修改日期在10天前的文件
=================================================================================
forfiles /p "c:\backup" /d -10 /c "cmd /c echo deleting @file ... del /f @path"
=================================================================================
以下是復(fù)制某天前文件到其它位置的批處理
要把在C盤根目錄下最后修改日期大于或等于2007年7月1日的文件復(fù)制到D盤根目錄下
=================================================================================
forfiles /p "c:\" /d "2007-7-1" /c "cmd /c copy @path d:\"
Windows Server 2003內(nèi)置的命令行文件,適合于XP以上系統(tǒng)
示例:
forfiles /m *.bkf /d -28 /c "cmd /c del @file /f"
刪除當(dāng)前目錄下28天以前的擴(kuò)展名為bkf文件(以當(dāng)前系統(tǒng)時(shí)間為基準(zhǔn))
forfiles 自動(dòng)刪除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同一目錄下,建一個(gè)bat文件的快捷方式在啟動(dòng)。
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
把以下復(fù)制到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
先刪過(guò)期文件,再刪所有的空目錄
如果操作系統(tǒng)是 Windows Server 2003 那就好辦了,因?yàn)樗幸粋€(gè)forfiles命令能夠查找滿足指定條件的文件,下面是這個(gè)命令的用法。
forfiles /p 目標(biāo)目錄名> /d 天數(shù)> /c 執(zhí)行的命令>
看看列出的三個(gè)參數(shù)都有什么用處:
/p 指定了要在哪個(gè)目錄里查找文件,默認(rèn)是當(dāng)前工作目錄。
/d 指定一個(gè)日期或天數(shù),用于比較文件的最后修改日期是否符合條件。
/c 對(duì)每個(gè)找到的文件執(zhí)行的命令。
例1.要把在C盤根目錄下最后修改日期大于或等于2007年7月1日的文件復(fù)制到D盤根目錄下:
forfiles /p "c:\" /d "2007-7-1" /c "cmd /c copy @path d:\"
例2.刪除在C盤backup目錄下最后修改日期在10天前的文件:
forfiles /p "c:\backup" /d -10 /c "cmd /c echo deleting @file ... del /f @path"
先看刪除文件的代碼
forfiles /p 包含要?jiǎng)h除文件的完整路徑(如:F:\Logfiles) /m *.log -d -7 /c "cmd /c del /f @path"
解釋一下相關(guān)參數(shù)及命令
/p Path> : 指定開(kāi)始搜索文件的位置,如果不指定則默認(rèn)為當(dāng)前目錄。
/m SearchMask> : 文件查找所使用的通配符如代碼中的"*.log"則為所有日志文件,當(dāng)然也可以指定諸如"manmee_*.log"這樣以manmee開(kāi)頭的所有日志文件。如果不指定此參數(shù)則默認(rèn)為"*.*"。
/d [{+|-}][{Date>|Days>}] : 指定想選擇文件的最后修改時(shí)間,上文中用了 "/d -7" 表示所有以當(dāng)天為基礎(chǔ),7天以前的文件。當(dāng)然這里還可以指定具體時(shí)間,例如:"/d -08/18/2009"這樣所有早于2009年8月18日的文件。注意指定的時(shí)間必須是"MM/DD/YYYY"的格式。
/c 對(duì)所有文件以此執(zhí)行指定的命令,命令體須在雙引號(hào)(")內(nèi),默認(rèn)是"cmd /c echo @file"。上文中用到的是"cmd /c del /f @path"刪除指定文件。(這里的@file 和 @path 為變量,下文中將解釋。)
下面說(shuō)一下上文中用到的參數(shù):
@PATH : 表示文件的完整的路徑。
@File : 表示文件名稱。
其他參數(shù)的詳細(xì)介紹點(diǎn)擊這里。
接下來(lái)我們看看刪除文件夾的操作,如果你看了上面的介紹,相信這命令你一看就能看懂。
forfiles /p 包含文件夾的路徑(如:F:\) /m 文件夾名稱(如:LogFiles) -d 0 /c "cmd /c if @ISDIR == true rd /s/q @path"
注意這里的"包含文件夾的路徑"不能包含要?jiǎng)h除的文件夾,如以上代碼所表示的就是,在F盤中查找名為L(zhǎng)ogFiles的文件或文件夾(不能指定查找文件夾,不過(guò)在刪除時(shí)我們做了判斷)。
還有就是這里出現(xiàn)了一個(gè)新的參數(shù)"@ISDIR"他用于判斷當(dāng)前文件類型是否是"文件夾類型",如果是則為true否則為false。
相信到這大家就明白了,最后再將代碼保存為批處理文件,然后加入計(jì)劃任務(wù)定期執(zhí)行即可。
看了上面的例子,覺(jué)得在 Windows Server 2003 下面要?jiǎng)h除老文件很簡(jiǎn)單吧。
但如果操作系統(tǒng)是 Windows 2000/XP 就比較麻煩,因?yàn)樗鼈儧](méi)有forfiles命令,只能靠自己寫批處理來(lái)實(shí)現(xiàn)了。
下面是我寫的批處理文件內(nèi)容:
復(fù)制代碼 代碼如下:

@echo off
rem ******************************
rem * 按時(shí)間刪除文件目錄的批處理 *
rem ******************************
rem 設(shè)置臨時(shí)目錄的路徑
set tempDir=%tmp%\remove_%date:~0,10%
if not exist %tempDir% md %tempDir%
rem 設(shè)置處理日期的腳本文件的路徑
set scriptFile=%tempDir%\get_date.vbs
rem 獲得要保留的天數(shù)
set days=%~1
if "%days%" == "" goto printUsage
rem 獲得目標(biāo)目錄的路徑
set dirPath=%~2
if "%dirPath%" == "" set dirPath=.
rem 獲得要操作的文件形式
set fileSpec=%~3
if "%fileSpec%" == "" set fileSpec=*.*
rem 生成計(jì)算日期的腳本文件并獲得刪除的截止日期
echo d=date()-%1 > %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 %scriptFile%') do set lastDate=%%i
rem 處理目標(biāo)目錄里的每個(gè)對(duì)象
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 處理目標(biāo)目錄里對(duì)象的過(guò)程
:proc
rem 獲得對(duì)象的創(chuàng)建日期并判斷是否為有效格式
set fileDate=%~1
echo %fileDate% | findstr "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" > nul
if errorlevel 1 goto end
rem 獲得對(duì)象的類型
set fileType=%~3
if "%fileType%" == "" goto end
rem 獲得對(duì)象的名稱
set fileName=%~4
if "%fileName%" == "" goto end
if "%fileName%" == "." goto end
if "%fileName%" == ".." goto end
if "%fileName%" == "字節(jié)" goto end
if "%fileName%" == "可用字節(jié)" goto end
rem 判斷對(duì)象日期是否小于或等于刪除的截止日期
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 occurred during backuping.
:done
rd /s /q %tempDir%
goto end
:printUsage
echo Usage: %0 ^Days^> [Work directory] [Target file specification (can include wildcards)]
goto end
:end

主要是利用Windows的腳本功能來(lái)計(jì)算要?jiǎng)h除文件的截止日期,然后for加dir命令來(lái)提取文件的日期進(jìn)行判斷。
關(guān)于forfiles和for的詳細(xì)信息,可以在Windows的幫助與支持中找到。
您可能感興趣的文章:
  • cmd forfiles 從文件夾或樹中選擇要進(jìn)行批處理的文件(方便批量刪除n天前的文件)
  • 用批處理刪除N天前或指定日期時(shí)間(前后)創(chuàng)建(或修改)的文件

標(biāo)簽:滄州 沈陽(yáng) 新疆 紅河 上海 樂(lè)山 長(zhǎng)治 河南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用批處理文件自動(dòng)備份文件及文件夾,并自動(dòng)刪除n天前的文件》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    庆城县| 玉龙| 沙洋县| 南阳市| 安龙县| 高雄市| 华阴市| 平顺县| 色达县| 丽江市| 湖南省| 贵阳市| 衡阳县| 巴彦淖尔市| 林口县| 元朗区| 策勒县| 蓝田县| 五指山市| 桐城市| 黎平县| 虹口区| 巴青县| 隆昌县| 香港 | 青海省| 安顺市| 阳谷县| 西林县| 河北省| 浪卡子县| 都匀市| 西藏| 永昌县| 汨罗市| 宁晋县| 固镇县| 朝阳县| 湘西| 浦城县| 宁安市|