windows刪除檔案的批處理操作

datapeng發表於2017-12-25

1. 用批處理檔案刪除當前目錄下 7 天以前的副檔名為bkf檔案(以當前系統時間為基準)
   示例: forfiles /m *.bkf /d -7 /c "cmd /c del @file /f"

2. forfiles 自動刪除7天前檔案 (以當前系統時間為基準)
示例: forfiles /p "d:/test" /s /m *.* /d -7 /c "cmd /c del @path"

  d:/test換成你要的目錄路徑; /d -7 指刪除7天以前檔案。


3. 刪除所有的空目錄(以刪除d:/test目錄下為例) :

dir /ad/b/s d:/test/ |sort /r >d:/kill.txt
For /f "tokens=*" %%i in (d:/kill.txt) DO rd "%%i"
del d:/kill.txt

4. 先刪7 天以前檔案,再刪所有的空目錄 ;把以下複製到bat檔案中。
 @echo off
 forfiles /p "d:/test" /s /m *.* /d -7 /c "cmd /c del @path"
 dir /ad/b/s d:/test/ |sort /r >d:/kill.txt
 For /f "tokens=*" %%i in (d:/kill.txt) DO rd "%%i"
 del d:/kill.txt

5. forfiles 命令的用法及引數:
   forfiles /p <目標目錄名> /d <天數> /c <執行的命令>
 
  /p 指定了要在哪個目錄裡查詢檔案,預設是當前工作目錄。
  /d 指定一個日期或天數,用於比較檔案的最後修改日期是否符合條件。
  /c 對每個找到的檔案執行的命令。
例1.要把在C盤根目錄下最後修改日期大於或等於2010年1月7日的檔案複製到D盤根目錄下:
    forfiles /p "c:/" /d "2007-7-1" /c "cmd /c copy @path d:/"

例2.刪除在C盤backup目錄下最後修改日期在10天前的檔案:
      forfiles /p "c:/backup" /d -10 /c "cmd /c echo deleting @file ... && del /f @path"

6. forfiles /p 包含要刪除檔案的完整路徑(如:F:/Logfiles) /m *.log -d -7 /c "cmd /c del /f

@path"

解釋一下相關引數及命令

/p : 指定開始搜尋檔案的位置,如果不指定則預設為當前目錄。

/m : 檔案查詢所使用的萬用字元如程式碼中的"*.log"則為所有日誌檔案,當然也可以指定諸

如"manmee_*.log"這樣以manmee開頭的所有日誌檔案。如果不指定此引數則預設為"*.*"。

/d [{+|-}][{|}] : 指定想選擇檔案的最後修改時間,上文中用了 "/d -7" 表示所有以當

天為基礎,7天以前的檔案。當然這裡還可以指定具體時間,例如:"/d -01/7/2010"這樣所有早於2010年

1月7日的檔案。注意指定的時間必須是"MM/DD/YYYY"的格式。

/c 對所有檔案以此執行指定的命令,命令體須在雙引號(")內,預設是"cmd /c echo @file"。上文中用

到的是"cmd /c del /f @path"刪除指定檔案。(這裡的@file 和 @path 為變數,下文中將解釋。)

下面說一下上文中用到的引數:

@PATH : 表示檔案的完整的路徑。

@File : 表示檔名稱。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29371470/viewspace-2149196/,如需轉載,請註明出處,否則將追究法律責任。

相關文章