使用forfiles命令批量刪除N天前文件
在整理手上幾臺(tái)SQL SERVER 2000的數(shù)據(jù)庫(kù)備份時(shí),一方面為了方便快速還原數(shù)據(jù)庫(kù),另外一方面為了備份冗余、備份方式統(tǒng)一(先備份到本地,然后收上磁帶),將以前通過(guò)Symantec Backup Exec直接備份上帶的作業(yè)改成了如下方式:
Step 1: 通過(guò)數(shù)據(jù)庫(kù)維護(hù)計(jì)劃將備份生成在本地磁盤M,完整備份保留2天,事務(wù)日志備份保留3天
M:\DB_BACKUP\FULL_BACKUP
M:\DB_BACKUP\LOG_BACKUP
Step 2: 備份完成后通過(guò)Symantec Backup Exec將備份文件收上磁帶。
但是發(fā)現(xiàn)即使SQL SERVER 2000的數(shù)據(jù)庫(kù)維護(hù)計(jì)劃設(shè)置了刪除幾天前的備份文件,但是發(fā)現(xiàn)根本沒有刪除過(guò)期備份。于是只好使用dos命令來(lái)處理。剛開始想用forfiles命令,結(jié)果我搜索的時(shí)候,發(fā)現(xiàn)Windows 2000下沒有forfiles命令,后來(lái)通過(guò)從第三方復(fù)制過(guò)來(lái),發(fā)現(xiàn)Windows 2000下也可以使用forfiles(如果不借助于forfiles命令,直接用批處理命令完成這個(gè),那簡(jiǎn)直痛苦死了)
關(guān)于forfiles命令的語(yǔ)法如下所示
C:\>forfiles /?
FORFILES [/P pathname] [/M searchmask] [/S]
[/C command] [/D [+ | -] {yyyy-MM-dd | dd}]
Description:
Selects a file (or set of files) and executes a
command on that file. This is helpful for batch jobs.
Parameter List:
/P pathname Indicates the path to start searching.
The default folder is the current working
directory (.).
/M searchmask Searches files according to a searchmask.
The default searchmask is '*' .
/S Instructs forfiles to recurse into
subdirectories. Like "DIR /S".
/C command Indicates the command to execute for each file.
Command strings should be wrapped in double
quotes.
The default command is "cmd /c echo @file".
The following variables can be used in the
command string:
@file - returns the name of the file.
@fname - returns the file name without
extension.
@ext - returns only the extension of the
file.
@path - returns the full path of the file.
@relpath - returns the relative path of the
file.
@isdir - returns "TRUE" if a file type is
a directory, and "FALSE" for files.
@fsize - returns the size of the file in
bytes.
@fdate - returns the last modified date of the
file.
@ftime - returns the last modified time of the
file.
To include special characters in the command
line, use the hexadecimal code for the character
in 0xHH format (ex. 0x09 for tab). Internal
CMD.exe commands should be preceded with
"cmd /c".
/D date Selects files with a last modified date greater
than or equal to (+), or less than or equal to
(-), the specified date using the
"yyyy-MM-dd" format; or selects files with a
last modified date greater than or equal to (+)
the current date plus "dd" days, or less than or
equal to (-) the current date minus "dd" days. A
valid "dd" number of days can be any number in
the range of 0 - 32768.
"+" is taken as default sign if not specified.
/? Displays this help message.
Examples:
FORFILES /?
FORFILES
FORFILES /P C:\WINDOWS /S /M DNS*.*
FORFILES /S /M *.txt /C "cmd /c type @file | more"
FORFILES /P C:\ /S /M *.bat
FORFILES /D -30 /M *.exe
/C "cmd /c echo @path 0x09 was changed 30 days ago"
FORFILES /D 2001-01-01
/C "cmd /c echo @fname is new since Jan 1st 2001"
FORFILES /D +2014-12-15 /C "cmd /c echo @fname is new today"
FORFILES /M *.exe /D +1
FORFILES /S /M *.doc /C "cmd /c echo @fsize"
FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"
對(duì)應(yīng)的中文提示信息如下所示:
語(yǔ)法
forfiles [/p Path ] [/m SearchMask ] [/s ] [/c Command ] [/d [{+ | - }] [{MM / DD / YYYY | DD }]]
參數(shù)
/p Path
指定Path ,表明要從哪里開始搜索。默認(rèn)的文件夾是當(dāng)前工作目錄,該目錄通過(guò)鍵入句號(hào)(.) 指定。
/m SearchMask
按照SearchMask 搜索文件。默認(rèn)的SearchMask 是*.* 。
/s
指示forfiles 在子目錄中搜索。
/c Command
在每個(gè)文件上運(yùn)行指定的Command 。帶有空格的命令字符串必須用引號(hào)括起來(lái)。默認(rèn)的Command 是"cmd /c echo @file" 。
/d [{+ | - }] [{MM / DD / YYYY | DD }]
選擇日期大于或等于(+ )(或者小于或等于(- ))指定日期的文件,其中MM / DD / YYYY 是指定的日期,DD 是當(dāng)前日期減去DD 天。如果未指定+ 或- ,則使用+ 。DD 的有效范圍是0 - 32768。
/?
在命令提示符下顯示幫助。
如下所示,由于Windows Server 2000下拷貝過(guò)來(lái)的forfiles命令的版本是V 1.1,使用參數(shù)必須為-p、-c、-m 而且參數(shù)后面不能有空格。
如下所示,delete_old_backup.bat 刪除2天前的完整備份、事務(wù)日志備份、以及維護(hù)計(jì)劃生成的日志文件。
echo --------------------------------------------- >>delete_old_backup.log echo Delete the backup log start at %Date% - %time% >>delete_old_backup.log rem Delete days. set DaysAgo=2 rem delete old backup log files. set LogPath=M:\DB_BACKUP\ forfiles -p%LogPath% -m*.txt -d-%DaysAgo% -c"cmd /c del /q @FILE" >> delete_old_backup.log echo Delete the backup log Stop at %Date% - %time% >>delete_old_backup.log echo Delete the full backup start at %Date% - %time% >>delete_old_backup.log set FullBackupPath=M:\DB_BACKUP\FULL_BACKUP forfiles -p%FullBackupPath% -m*.bak -d-%DaysAgo% -c"cmd /c del /q @FILE" >> delete_old_backup.log echo Delete the full backup Stop at %Date% - %time% >>delete_old_backup.log echo Delete the log backup start at %Date% - %time% >>delete_old_backup.log set LogBackupPath=M:\DB_BACKUP\LOG_BACKUP forfiles -p%LogBackupPath% -m*.TRN -d-%DaysAgo% -c"cmd /c del /q @FILE" >> delete_old_backup.log echo Delete the log backup Stop at %Date% - %time% >>delete_old_backup.log echo --------------------------------------------- >>delete_old_backup.log
腳本編寫、測(cè)試成功后,然后設(shè)置Task Schedule,大體步驟如下步驟所示:
Step 1:在控制面板找到任務(wù)計(jì)劃,執(zhí)行任務(wù)計(jì)劃向?qū)В?/p>
Step 2: 點(diǎn)擊“瀏覽”按鈕,選擇M:\DB_BACKUP\delete_old_backup.bat文件
Step 3:輸入任務(wù)的名稱,以及執(zhí)行任務(wù)的Schedule
Step 4:設(shè)置任務(wù)執(zhí)行的時(shí)間以及頻率
Step 5:輸入知曉計(jì)劃任務(wù)的賬號(hào)以及密碼
Step 6:完成任務(wù)計(jì)劃設(shè)置。
上面的bat主要是支持參數(shù)與日志的現(xiàn)實(shí),確實(shí)不錯(cuò),其實(shí)核心代碼就是這樣的
forfiles /p "c:\backup" /d -10 /c "cmd /c echo deleting @file ... && del /f @path"
測(cè)試前最好備份一下數(shù)據(jù)
上一篇:DOS批處理中%cd%與%~dp0的區(qū)別詳解
欄 目:DOS/BAT
下一篇:批處理入門手冊(cè)之批處理常用DOS命令篇(attrib、del、copy、xcopy)
本文標(biāo)題:使用forfiles命令批量刪除N天前文件
本文地址:http://mengdiqiu.com.cn/a1/DOS_BAT/10041.html
您可能感興趣的文章
- 01-10DOS下查看硬盤分區(qū)該使用什么命令
- 01-10使用批處理實(shí)現(xiàn)軟件的自動(dòng)安裝以安裝搜狗拼音為例
- 01-10windows使用批處理發(fā)布web到tomcat并啟動(dòng)tomcat腳本分享
- 01-10win7怎么設(shè)定關(guān)閉顯示器時(shí)間
- 01-10ftp自動(dòng)下載文件腳本分享(ftp命令下載文件)
- 01-10dos命令行不能輸入中文怎么辦該如何解決
- 01-10windows常用網(wǎng)絡(luò)命令使用腳本分享
- 01-10DOS中的pause命令簡(jiǎn)介
- 01-10Xcopy命令參數(shù)使用介紹
- 01-10XCOPY的高級(jí)使用:指定日期并且用EXCLUDE排除指定文件


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10DOS下查看硬盤分區(qū)該使用什么命令
- 01-10使用批處理實(shí)現(xiàn)軟件的自動(dòng)安裝以安
- 01-10后臺(tái)運(yùn)行bat定時(shí)器程序示例分享
- 01-10通過(guò)批處理修改DNS的代碼(推薦)
- 01-10dota2服務(wù)器ping測(cè)試腳本分享
- 01-10再談DOS批處理下格式化日期字符串的
- 01-10windows使用批處理發(fā)布web到tomcat并啟動(dòng)
- 01-10win7怎么設(shè)定關(guān)閉顯示器時(shí)間
- 01-10屏蔽up鍵禁止游戲運(yùn)行腳本分享
- 01-10win7創(chuàng)建wifi熱點(diǎn)腳本分享
隨機(jī)閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10C#中split用法實(shí)例總結(jié)