批次檔.BAT 刪除過期檔案 , 或進行備份

批次檔.BAT 刪除過期檔案 , 或進行備份


這邊我們使用的的是Windows內建的Forfiles指令,指令說明大概看一下就好了,

可往下直接看範例的應用情境 


Forfiles

從資料夾或樹中選擇要進行批處理的檔案。

 

語法

forfiles [/p Path ] [/m SearchMask ] [/s ] [/c Command ] [/d [{ | – }] [{MM / DD / YYYY | DD }]]

 

引數

/p Path

 

指定Path ,表明要從哪裡開始搜尋。預設的資料夾是當前工作目錄,該目錄通過鍵入句號(.) 指定。

 

/m SearchMask

 

按照SearchMask 搜尋檔案。預設的SearchMask 是*.* 。

 

/s

 

指示forfiles 在子目錄中搜尋。

 

/c Command

 

在每個檔案上執行指定的Command 。帶有空格的命令字串必須用引號括起來。預設的Command 是”cmd /c echo @file” 。

 

/d [{ | – }] [{MM / DD / YYYY | DD }]

 

選擇日期大於或等於( )(或者小於或等於(- ))指定日期的檔案,其中MM / DD / YYYY 是指定的日期,DD 是當前日期減去DD 天。如果未指定 或- ,則使用 。DD 的有效範圍是0 – 32768。

 

/?

 

在命令提示列下顯示。

 

註釋

 

•  Forfiles 最常用於批處理檔案中。

•  Forfiles /s 與dir /s 類似。

•  下表列出了可在/c Command 命令字串中使用的變數。

 

變數  描述

@file

 檔名

 

@fname

 無副檔名的檔名

 

@ext

 副檔名

 

@path

 檔案的完整路徑

 

@relpath

 檔案的相對路徑

 

@isdir

 如果檔案型別是目錄,則計算值為TRUE,否則值為FALSE

 

@fsize

 用位元組表示的檔案大小

 

@fdate

 檔案中上次修改的日期戳

 

@ftime

 檔案中上次修改的時間戳

 

 

•  使用forfiles ,可以在多個檔案上執行命令或將引數傳遞給多個檔案。例如,可以在樹中帶有*.txt 副檔名的所有檔案上執行TYPE 命令。或者,可以用檔名“Myinput.txt”作為第一個引數,在C:/ 驅動器上執行每個批處理檔案(*.bat)。

 

•  通過使用forfiles ,可以執行下列任何操作:

 

•  使用/d 按照絕對或相對日期選擇檔案。

 

•  使用諸如@fsize(檔案大小)和@fdate(檔案日期)這樣的變數構建檔案的存檔樹。

 

•  使用@isdir 變數區分檔案和目錄。

 

•  通過在命令列中包含特殊字元和使用十六進位制程式碼0x HH 環繞字元來格式化輸出內容。

 

 

•  Forfiles 通過在旨在僅處理單個檔案的工具上執行“迴圈子目錄”標記來發揮作用。

 

 

範例

要列出C槽: 上的所有批處理檔案,請輸入:

 

forfiles /p c:/ /s /m*.bat /c”cmd /c echo @file is a batch file”

 

要列出C槽: 上的所有目錄,請輸入:

 

forfiles /p c:/ /s /m*.* /c”cmd /c if @isdir==true echo @file is a directory”

 

要列出C槽: 上存在時間多於100 天的所有檔案,請輸入:

 

forfiles /p c:/ /s /m*.* /dt-100 /c”cmd /c echo @file :date >= 100 days”

 

要列出C槽: 上1993 年1 月1 日以前建立的所有檔案,而且對於日期早於1993 年1 月1 日的檔案顯示“file is quite old!”,請輸入:

 

forfiles /p c:/ /s /m*.* /dt-01011993 /c”cmd /c echo @file is quite old!”

 

要按列格式列出C槽: 上所有檔案的副檔名,請輸入:

 

forfiles /p c:/ /s /m*.* /c “cmd /c echo extension of @file is 0x09@ext0x09” With:

 

要列出C槽: 上的所有批處理檔案,請輸入:

 

forfiles /p c:/ /s /m *.bat /c “cmd /c echo @file is a batch file”

 

要列出C槽: 上的所有目錄,請輸入:

 

forfiles /p c:/ /s /m *.* /c “cmd /c if @isdir==true echo @file is a directory”

 

要列出C槽: 上存在時間多於100 天的所有檔案,請輸入:

 

forfiles /p c:/ /s /m *.* /d t-100 /c “cmd /c echo @file :date >= 100 days”

 

要列出C槽: 上1993 年1 月1 日以前建立的所有檔案,而且對於日期早於1993 年1 月1 日的檔案顯示“file is quite old!”,請輸入:

 

forfiles /p c:/ /s /m *.* /d t-01011993 /c “cmd /c echo @file is quite old!”

 

要按列格式列出C槽: 上所有檔案的副檔名,請輸入:

 

forfiles /p c:/ /s /m*.* /c “cmd /c echo extension of @file is 0x09@ext0x09”



刪除D:\DEMO目錄下 7 天前的檔案。 

forfiles -p "D:\DEMO" -s -m *.* -d -7 -c "cmd /c del @path"

forfiles /P "D:\DEMO" /S /M *.* /D -7 /C "cmd /c del @path"


同上面指令的應用,您也可以用來定期複製備份檔案

或者透過7zip壓縮指令將您的檔案先進行壓縮然後

再利用forfiles指令來進行備份資料


7zip壓縮可參考站上另外一篇

https://jojoxyz.blogspot.com/2020/08/bat.html

留言

這個網誌中的熱門文章

TeknoParrot 模擬器介紹,俗稱《鸚鵡模擬器》

[轉貼] ASP.NET傳遞參數給Crystal Report做Export或Print的動作

[轉貼] Server 端Post資料到 .ashx