2017年9月20日 星期三

使用cmd指令刪除n天前的檔案(forfiles)



FORFILES [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] {yyyy/MM/dd | dd}]

    /P    pathname      表示要開始搜尋的路徑。
                        預設資料夾是目前的
                        目錄 (.)。

    /M    searchmask    根據 searchmask 搜尋檔案。
                        預設的 searchmask 是 '*'。

    /S                  指示 forfiles 遞迴搜尋
                        子目錄。例如 "DIR /S"。

    /C    command       表示每個檔案要執行的命令。
                        命令字串應該包含在雙括號
                        之間。
                        預設的命令是 "cmd /c echo @file"。

    /D    date          選取檔案上次修改的時間大於或
                        等於 (+) 、小於或等於 (-),
                        使用 "yyyy/MM/dd" 格式指定的日期;
                        或選取檔案上次修改
                        的時間大於或等於 (+)
                        目前的日期再加上 "dd" 天、
                        小於或等於 (-) 目前的日期減去 "dd" 天。
                        有效的 "dd" 可以是介於
                        0 - 32768 之間的數字。
                        如果未指定,"+" 將被視為預設符號。

範例如下

刪除放在D:\LOG目錄內10天以前的記事本檔案
forfiles /P "D:\LOG" /S /M *.txt /D -10 /C "cmd /c del @path"

列出並刪除放在D:\LOG目錄內10天以前的記事本檔案
forfiles /P "D:\LOG" /S /M *.txt /D -10 /C "cmd /c echo delete @path && del @path"

列出放在D:目錄內所有的批次檔
forfiles /P "D:" /S /M *.bat /C "cmd /c echo @path"

複製D:\WORK目錄內10天以前的檔案到E:\Archive
forfiles /P "D:\WORK" /S /D -10 /C "cmd /c copy @path E:\Archive"

列出並複製D:\WORK目錄內10天以前的檔案到E:\Archive
forfiles /P "D:\WORK" /S /D -10 /C "cmd /c echo copy @path && copy @path E:\Archive"

搬移D:\WORK目錄內10天以前的檔案到E:\Archive
forfiles /P "D:\WORK" /S /D -10 /C "cmd /c move @path E:\Archive"

列出並搬移D:\WORK目錄內10天以前的檔案到E:\Archive
forfiles /P "D:\WORK" /S /D -10 /C "cmd /c echo move @path && move @path E:\Archive"



沒有留言:

張貼留言