如何刪除過期的數據庫備份文件呢? .


通過 Forfiles 刪除指定目錄下過期的備份文件

/*-- 用法詳解

D:/>forfiles /?

 

FORFILES [/P pathname] [/M searchmask] [/S]

         [/C command] [/D [+ | -] {yyyy-MM-dd | dd}]

 

描述 :

    選擇一個文件 ( 或一組文件 ) 並在那個文件上

    執行一個命令。這有助於批處理作業。

 

參數列表 :

    /P    pathname      表示開始搜索的路徑。默認文件夾是當前工作的

                        目錄 (.) 。

 

    /M    searchmask    根據搜索掩碼搜索文件。默認搜索掩碼是 '*' 。

 

    /S                  指導 forfiles 遞歸到子目錄。像 "DIR /S" 。

 

    /C    command       表示為每個文件執行的命令。命令字符串應該

                         用雙引號括起來。

 

                        默認命令是 "cmd /c echo @file" 。下列變量

                        可以用在命令字符串中 :

                        @file    - 返回文件名。

                        @fname   - 返回不帶擴展名的文件名。

                        @ext     - 只返回文件的擴展。

                        @path    - 返回文件的完整路徑。

                        @relpath - 返回文件的相對路徑。

                        @isdir   - 如果文件類型是目錄,返回 "TRUE" ;

                                   如果是文件,返回 "FALSE" 。

                        @fsize   - 以字節為單位返回文件大小。

                         @fdate   - 返回文件上一次修改的日期。

                        @ftime   - 返回文件上一次修改的時間。

 

                        要在命令行包括特殊字符,字符請以 0xHH

                        形式使用十六進制代碼 ( 例如, x09 為 tab) 。

                        內部 CMD.exe 命令前面應以 "cmd /c" 開始。

 

    /D    date           選擇文件,其上一次修改日期大於或等於 (+) ,

                        或者小於或等於 (-) 用 "yyyy-MM-dd" 格式指定的日期 ;

                        或選擇文件,其上一次修改日期大於或等於 (+)

                        當前日期加 "dd" 天,或者小於或等於 (-) 當前

                        日期減 "dd" 天。有效的 "dd" 天數可以是

                         0 - 32768 范圍內的任何數字。如果沒有指定,

                        "+" 被當作默認符號。

 

    /?                  顯示幫助消息。

 

例如 :

    FORFILES /?

    FORFILES

    FORFILES /P C:/WINDOWS /S /M DNS*.* 

       -- 顯示 C:/WINDOWS 目錄及子目錄下 DNS 開頭的所有文件名

    FORFILES /S /M *.txt /C "cmd /c type @file | more"

       -- 顯示當前目錄下所有 TXT 文件的內容

    FORFILES /P C:/ /S /M *.bat 

       -- 顯示 C 盤目錄下及子目錄下所有文件后綴名為 bat 的文件名

    FORFILES /D -30 /M *.exe

       -- 顯示當前目錄下修改日期小於等於天前的 exe 文件名

             /C "cmd /c echo @path 0x09 在 30 前就被更改。 " 

                  -- 顯示當前目錄下所有文件的完整路徑並在后面追加 ‘ 在 30 前就被更改 ’ 的文字

    FORFILES /D 2001-01-01 

       -- 顯示當前目錄下修改日期大於等於 -01-01 的文件名 ( 含文件夾名 )

             /C "cmd /c echo @fname 在 2001 年月日就是新的。 " 

                  -- 顯示當前目錄下所有文件名並在后面追加 ‘ 在 30 前就被更改 ’ 的文字

    FORFILES /D +2009-8-18 /C "cmd /c echo @fname 今天是新的。 "

       -- 顯示當前目錄下修改日期大於等於 -8-18 的文件名並在后面追加 ‘ 今天是新的 ’ 的文字

    FORFILES /M *.exe /D +1 

       -- 顯示當前目錄下修改日期大於等於明天的 exe 文件名

    FORFILES /S /M *.doc /C "cmd /c echo @fname @fsize" 

       -- 顯示當前目錄及子目錄下所有 doc 文件的文件名和文件大小

    FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"

       -- 打開當前目錄下 txt 文件,不含子文件。 ( 注意變量 isdir 后面的 FALSE 必須為大寫 )

 

*/

 

 

目的:刪除目錄 i: /sqldataup 中天前的 . bak 文件:

步驟:

1 、定義 FORFILES 批處理腳本如下:

C: /> FORFILES / P i: /sqldataup / M *. bak / C "cmd /C del /Q @path" / d - 5

如果執行成功則返回當前盤符 C: /> 。

-- 如果沒有需要刪除的文件則返回信息錯誤 : 用指定的搜索標准沒有找到文件。比如:

--C:/>FORFILES /P i:/sqldataup /M *.bak /C "cmd /C del /Q @path" /d -5

-- 錯誤 : 用指定的搜索標准沒有找到文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM