使用FORFILES命令來(lái)刪除SQLServer備份的批處理
該FORFILES命令將選取文件的一個(gè)子集并且針對(duì)這個(gè)子集執(zhí)行一個(gè)命令。這個(gè)命令需要下面的參數(shù)和接受下面的變量。
參數(shù)
參數(shù)名 | 描述 |
/p | 路徑 |
/m | 檢索屏蔽 (默認(rèn)情況下是 *.*) |
/s | 如果包含這個(gè)參數(shù),那么子目錄將會(huì)被遞歸地檢索。 |
/c <command> | 針對(duì)結(jié)果集中的每一個(gè)文件執(zhí)行命令,命令必須包含在雙引號(hào)中,默認(rèn)情況是"cmd c/ echo @file" |
/d | 針對(duì)文件選擇的日期范圍,把最新的更改日期當(dāng)作文件標(biāo)準(zhǔn)。當(dāng)/d參數(shù)是MM/DD/YYYY格式時(shí),滿足指定的+/-日期標(biāo)準(zhǔn)的文件也包含在內(nèi)。當(dāng)文件格式是smallint (-32,768 - 32,768)文件+/-文件并且?guī)е粋€(gè)更改日期+/-時(shí),從當(dāng)前日期到該日期的時(shí)間數(shù)目將會(huì)包含在這個(gè)文件結(jié)果集中。 |
變量
變量名 | 描述 |
@FILE | 文件名 |
@FNAME | 無(wú)擴(kuò)展的文件名 |
@EXT | 文件擴(kuò)展名 |
@PATH | 文件絕對(duì)路經(jīng) |
@RELPATH | 文件的相對(duì)路徑 |
@ISDIR | 如果文件類型是一個(gè)目錄,那么判斷是否是TRUE |
@FSIZE | 文件大小(用字節(jié)衡量) |
@FDATE | 文件上的最新更改日期郵戳 |
@FTIME | 文件上的最新更改時(shí)間郵戳 |
利用這些參數(shù)可以構(gòu)造下面的例子來(lái)解決你刪除備份腳本文件的難題。你可以基于更改時(shí)間/日期或者備份類型來(lái)創(chuàng)建腳本。你甚至可以構(gòu)造能夠同時(shí)參照兩種標(biāo)準(zhǔn)的腳本。
我們將仔細(xì)看看這些可能的腳本。記住,你將從T-SQL代碼內(nèi)部執(zhí)行這個(gè)過(guò)程,所以你需要在一個(gè)xp_cmdshell訪問(wèn)中以EXEC xp_cmdshell 'FORFILES COMMAND'的格式總結(jié)這些語(yǔ)句。請(qǐng)注意,在所有的例子中我都會(huì)使用/Q 和 /F標(biāo)簽來(lái)作為刪除命令。這意味著這個(gè)命令將使用安靜模式(/Q)甚至刪除只能讀的文件(/F)。
例子
當(dāng)文件更改日期晚于10/18/2008時(shí),刪除所有C:Backup目錄和它子目錄下的.sql文件。
EXEC xp_cmdshell 'FORFILES /p c:BACKUP /s /m *.sql /d 10/18/2008 /c "CMD /C del /Q /F @FILE"'
當(dāng)文件更改日期多于30天時(shí),刪除所有C:Backup目錄和它的子目錄下的.sql文件。
EXEC xp_cmdshell 'FORFILES /p c:BACKUP /s /m *.sql /d -30 /c "CMD /C del /Q /F @FILE"'
當(dāng)文件更改日期多于30天且文件名以"F_"打頭時(shí),刪除所有C:Backup目錄和它的子目錄下的.sql文件。
EXEC xp_cmdshell 'FORFILES /p c:BACKUP /s /m F_*.sql /d -30 /c "CMD /C del /Q /F @FILE"'
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。