TShopping

 找回密碼
 註冊
搜索
查看: 2953|回復: 0
打印 上一主題 下一主題

[教學] 批次檔 bat - 刪除幾天前的檔案

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2015-9-10 00:09:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook

使用排程執行 forfiles。
forfiles -p "D:\test" -s -m *.* -d -10 -c "cmd /c del @path"
forfiles /P "D:\test" /S /M *.* /D -10 /C "cmd /c del @path"
刪除 10 天前的檔案。

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"。

                        下列變數可以使用於命令字串:

                        @file    - 傳回檔案的名稱。
                        @fname   - 只傳回檔案的名稱,不傳附檔名。
                        @ext     - 只傳回檔案的附檔名。
                        @path    - 傳回檔案的完整路徑。
                        @relpath - 傳回檔案的相對路徑。
                        @isdir   - 如果檔案類型是目錄的話,
                                   傳回 "TRUE",如果是檔案的話,傳回 "FALSE"。
                        @fsize   - 傳回檔案的大小,單位是位元組。
                        @fdate   - 傳回檔案上次修改的日期。
                        @ftime   - 傳回檔案上次修改的時間。

                        要在命令列中包含特殊字元的話,請使用 0xHH 格式的十六
                        進位字元碼 (例如 0x09 代表 tab)。
                        內部的 CMD.exe 命令應該以 "cmd /c" 執行。

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

    /?                  顯示這個說明訊息。

範例:
    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 +2011/2/30 /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"


參考文章

http://flyfox.pixnet.net/blog/post/28905281-bat---%E5%88%AA%E9%99%A4%E4%B8%83%E5%A4%A9%E5%89%8D%E7%9A%84%E6%AA%94%E6%A1%88


 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-4-25 09:44 , Processed in 0.126907 second(s), 22 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表