麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > BAT > 正文

使用forfiles命令批量刪除N天前文件

2020-03-29 19:52:32
字體:
供稿:網(wǎng)友

在整理手上幾臺SQL SERVER 2000的數(shù)據(jù)庫備份時,一方面為了方便快速還原數(shù)據(jù)庫,另外一方面為了備份冗余、備份方式統(tǒng)一(先備份到本地,然后收上磁帶),將以前通過Symantec Backup Exec直接備份上帶的作業(yè)改成了如下方式:
    Step 1: 通過數(shù)據(jù)庫維護計劃將備份生成在本地磁盤M,完整備份保留2天,事務(wù)日志備份保留3天

            M:/DB_BACKUP/FULL_BACKUP
            M:/DB_BACKUP/LOG_BACKUP

    Step 2:  備份完成后通過Symantec Backup Exec將備份文件收上磁帶。
但是發(fā)現(xiàn)即使SQL SERVER 2000的數(shù)據(jù)庫維護計劃設(shè)置了刪除幾天前的備份文件,但是發(fā)現(xiàn)根本沒有刪除過期備份。于是只好使用dos命令來處理。剛開始想用forfiles命令,結(jié)果我搜索的時候,發(fā)現(xiàn)Windows 2000下沒有forfiles命令,后來通過從第三方復(fù)制過來,發(fā)現(xiàn)Windows 2000下也可以使用forfiles(如果不借助于forfiles命令,直接用批處理命令完成這個,那簡直痛苦死了)
關(guān)于forfiles命令的語法如下所示
 
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"
 
對應(yīng)的中文提示信息如下所示:

語法
forfiles [/p Path ] [/m SearchMask ] [/s ] [/c Command ] [/d [{+ | - }] [{MM / DD / YYYY | DD }]]
參數(shù)
/p Path
指定Path ,表明要從哪里開始搜索。默認的文件夾是當(dāng)前工作目錄,該目錄通過鍵入句號(.) 指定。
/m SearchMask
按照SearchMask 搜索文件。默認的SearchMask 是*.* 。
/s
指示forfiles 在子目錄中搜索。
/c Command
在每個文件上運行指定的Command 。帶有空格的命令字符串必須用引號括起來。默認的Command 是"cmd /c echo @file" 。
/d [{+ | - }] [{MM / DD / YYYY | DD }]
選擇日期大于或等于(+ )(或者小于或等于(- ))指定日期的文件,其中MM / DD / YYYY 是指定的日期,DD 是當(dāng)前日期減去DD 天。如果未指定+ 或- ,則使用+ 。DD 的有效范圍是0 - 32768。
/?
在命令提示符下顯示幫助。
如下所示,由于Windows Server 2000下拷貝過來的forfiles命令的版本是V 1.1,使用參數(shù)必須為-p、-c、-m 而且參數(shù)后面不能有空格。

forfiles,批量刪除,N天前文件

如下所示,delete_old_backup.bat 刪除2天前的完整備份、事務(wù)日志備份、以及維護計劃生成的日志文件。

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

腳本編寫、測試成功后,然后設(shè)置Task Schedule,大體步驟如下步驟所示:

Step 1:在控制面板找到任務(wù)計劃,執(zhí)行任務(wù)計劃向?qū)В?/p>

forfiles,批量刪除,N天前文件

Step 2: 點擊“瀏覽”按鈕,選擇M:/DB_BACKUP/delete_old_backup.bat文件

forfiles,批量刪除,N天前文件

Step 3:輸入任務(wù)的名稱,以及執(zhí)行任務(wù)的Schedule

forfiles,批量刪除,N天前文件

Step 4:設(shè)置任務(wù)執(zhí)行的時間以及頻率

forfiles,批量刪除,N天前文件

Step 5:輸入知曉計劃任務(wù)的賬號以及密碼

forfiles,批量刪除,N天前文件

Step 6:完成任務(wù)計劃設(shè)置。

forfiles,批量刪除,N天前文件

上面的bat主要是支持參數(shù)與日志的現(xiàn)實,確實不錯,其實核心代碼就是這樣的

forfiles /p "c:/backup" /d -10 /c "cmd /c echo deleting @file ... && del /f @path"

測試前最好備份一下數(shù)據(jù)

 
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产青草视频在线观看视频 | 毛片视频播放 | 一级全毛片 | 成人在线视频免费 | 特一级毛片 | a级毛片免费观看在线播放 日本aaa一级片 | 国产高潮国产高潮久久久91 | 精品国产一区二区三区天美传媒 | 黄色7777| 久久精品视频16 | 亚洲欧美不卡视频 | 欧美成人精品一区二区三区 | 在线1区 | 成人福利视频网站 | 欧美黄色大片免费观看 | 日本在线观看一区二区 | 欧美日韩手机在线观看 | 国产人成免费爽爽爽视频 | 一级黄色电影网站 | 黄视频免费在线观看 | 欧美高清一级片 | 在线91视频 | 久久精品视频一区二区三区 | 综合网天天色 | 蜜桃视频最新网址 | 成人爽a毛片免费啪啪红桃视频 | 久在线观看福利视频69 | 黄在线免费 | 国产精品成人av片免费看最爱 | 狠狠色成色综合网 | 中文字幕精品亚洲 | 精品一区二区免费 | 毛片免费网 | 国产精品美女一区二区 | av电影在线观看免费 | 911网站大全在线观看 | 国产精品视频不卡 | 久久tv免费国产高清 | 色播视频在线播放 | 911精品影院在线观看 | 久国久产久精永久网页 |