用批處理實現的刪除特定時間以前的檔案
使用for命令讀取dir /tc /o-d /a的結果,可以分成4段,前兩段為日期與時間,第3段為目錄或檔案大小,第4段為檔名或目錄名。然後根據第1段和第2段與需要的時間進行比較,決定是否刪除檔案
@echo off
rem cd /d f:\temp
rem mDateTime格式: yyymmddHHmm
set mDateTime=200608161907
for /f "skip=4 tokens=1,2,3,4* delims=<>" %%i in ('dir /a /-c /tc /o-d') do call :proc %%i %%j %%k %%l
goto end
:proc
set aDate=%1
set aTime=%2
set aType=%3
set aFile=%4
set aDatetime=%aDate:~0,4%%aDate:~5,2%%aDate:~8,2%%aTime:~0,2%%aTime:~3,2%
if /i "%aDateTime%" lss "%mDateTime%" (if NOT "%aType%"=="DIR" attrib "%aFile%" -r -h -s && del "%aFile%")
:end
但上面會有點問題,主要是因為if不能做大的數字的比較,200608161907對if來說太大了。我們可以先比較日期,再比較時間,但if語句比較多,還是折中一下,採用兩位年份:
rem mDateTime格式: ymmddHHmm
set mDateTime=0608161907
……
set aDatetime=%aDate:~2,2%%aDate:~5,2%%aDate:~8,2%%aTime:~0,2%%aTime:~3,2%
Windows2003有一個命令Forfiles,如:
Forfiles /D -30 /C "cmd /c echo @fname 是30天前的。2000下可以把2003的Forfiles.exe檔案拷過來用。
另外如果保留最近n個檔案,就比較簡單了,如,保留最近30個bak檔案:
for /f "skip=30" %i in ('dir *.bak /tc /o-d /b') do del %i
批處理中,要把%i 改為%%i
詳細出處參考:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22392018/viewspace-1159324/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- windows刪除檔案的批處理操作Windows
- windows刪除幾天前檔案的批處理命令Windows
- window定時刪除批處理
- Windows bat批處理刪除指定N天前的檔案WindowsBAT
- rm命令刪除檔案時排除特定檔案
- 批處理刪除語句
- 批處理以當前時間為檔名建立檔案
- 運用sed命令高效地刪除檔案的特定行
- 刪除七天以前檔案的指令碼指令碼
- bat批處理徹底刪除0KB頑固檔案BAT
- 使用無伺服器實現檔案處理的批處理 - DZone Cloud伺服器Cloud
- Linux刪除指定時間之前的檔案Linux
- 網路傳輸時間和客戶端處理時間的界定(批處理應用)客戶端
- 刪除臨時表空間hang處理
- find 刪除以前的檔案
- 批處理-刪除環境變數變數
- 處理Linux刪除檔案後空間未釋放的問題Linux
- 刪除檔案後,磁碟空間沒有釋放的處理記錄
- window 批處理檔案
- 批處理檔案命令
- Windows批處理檔案Windows
- bat批處理檔案BAT
- Redis刪除特定字首key的優雅實現Redis
- UNDO表空間下的資料檔案被誤刪除後的處理方法
- 以前的windows安裝檔案可以刪除嗎 windowsold檔案刪除了有影響嗎Windows
- 用批處理檔案執行備份
- rman刪除指定時間的歸檔
- Python 刪除目錄中特定檔案Python
- linux 下按照時間刪除檔案Linux
- 定時拷貝加時間維的檔案和定時刪除過期檔案
- xcopy 實現批處理拷貝檔案或資料夾
- [windows]批處理獲取時間的long型值Windows
- 永久刪除 Windows 2000 預設本地 C, D 盤共享的兩個批處理檔案 (轉)Windows
- 切換IP批處理檔案
- Python批處理:檔案操作Python
- windows自帶刪除forfiles命令批處理詳解Windows
- 用批處理檔案編譯並執行java編譯Java
- java程式實現刪除本地檔案Java