用批處理刪除N天前或指定日期時間(前后)創(chuàng)建(或修改)的文件
核心代碼:
@echo off :: by oicu#lsxk.org :: 15:17 2011-1-13 :: 如果只是刪除指定日期或N天前修改的文件,用forfiles即可 FORFILES /P "C:\測試目錄" /S /M *.log /D -3 /C "cmd /c if @isdir==FALSE echo del @file" :: 指定日期(包含)前修改的文件:/D -yyyy/mm/dd :: 以下是流水賬 :: 使用限制:控制面板里設(shè)定日期格式為中文(中國) :: 只有dir /tc才能查看到文件創(chuàng)建時間,默認(rèn)dir都是dir /tw :: 為了取出創(chuàng)建時間,只好用兩次for+find,肯定很慢。 cd /d 你的目錄 :: 如果要包含子目錄,用for /r . %%a in (*) :: 顯示文件修改時間 for %%a in (*) do echo "%%~ta" :: 中文格式時相當(dāng)于 for %%a in (*) do for /f "tokens=1,2* delims= " %%b in ( 'dir /tw "%%a" ^| find /i "%%~nxa"' ) do echo "%%b %%c" :: 刪除某個時間后修改過的文件(這個簡單) for %%a in (*) do if "%%~ta" gtr "2008-04-01" echo del "%%a" :: 這個才是顯示文件創(chuàng)建時間 for %%a in (*) do for /f "tokens=1,2* delims= " %%b in ( 'dir /tc "%%a" ^| find /i "%%~nxa"' ) do echo "%%b %%c" :: 刪除某個時間之后創(chuàng)建的文件,如果要刪除某個時間之前創(chuàng)建的,更改兩 :: 處gtr為lss。除了日期外,增加判斷時間,可以去掉else段。 for %%a in (*) do for /f "tokens=1,2* delims= " %%b in ( 'dir /tc "%%a" ^| find /i "%%~nxa"') do ( if "%%b" gtr "2010-12-15" ( echo del "%%a" ) else ( if "%%b" equ "2010-12-15" if "%%c" gtr "14:50" echo del "%%a" ) ) :: 用批處理計算時間受到系統(tǒng)的日期格式限制,影響到用set取某一字段的值, :: 批處理計算時間方法過于復(fù)雜,要么只用vbs腳本刪除文件,要么用批處理 :: 配合vbs腳本刪除。 :: 取10天之前的日期,取回放入變量OldDate echo wscript.echo dateadd("d",-10,date)>GetOldDate.vbs for /f %%a in ('cscript /nologo GetOldDate.vbs') do set OldDate=%%a echo %OldDate% del GetOldDate.vbs :: VBScript里沒有Format函數(shù),Year、Month、Day等函數(shù)取數(shù)值后也要處理小 :: 于10的數(shù)字,只能用下面的方法整理日期格式 echo wscript.echo dateadd("d",-10,date)>GetOldDate.vbs for /f "tokens=1,2,3* delims=-/. " %%i in ('cscript /nologo GetOldDate.vbs') do ( set y=%%i set m=%%j set d=%%k ) if %m% LSS 10 set m=0%m% if %d% LSS 10 set d=0%d% set OldDate=%y%-%m%-%d% echo %OldDate% del GetOldDate.vbs :: 綜合上文,最后得到我們想要的結(jié)果 :: 刪除10天前創(chuàng)建的舊文件(不含子目錄) echo wscript.echo dateadd("d",-10,date)>GetOldDate.vbs for /f "tokens=1,2,3* delims=-/. " %%i in ('cscript /nologo GetOldDate.vbs') do ( set y=%%i set m=%%j set d=%%k ) if %m% LSS 10 set m=0%m% if %d% LSS 10 set d=0%d% set OldDate=%y%-%m%-%d% del GetOldDate.vbs for %%a in (*) do for /f "tokens=1,2* delims= " %%b in ( 'dir /tc "%%a" ^| find /i "%%~nxa"') do ( if "%%b" lss "%OldDate%" echo del "%%a" ) :: 刪除10天前修改的舊文件(不含子目錄) echo wscript.echo dateadd("d",-10,date)>GetOldDate.vbs for /f "tokens=1,2,3* delims=-/. " %%i in ('cscript /nologo GetOldDate.vbs') do ( set y=%%i set m=%%j set d=%%k ) if %m% LSS 10 set m=0%m% if %d% LSS 10 set d=0%d% set OldDate=%y%-%m%-%d% del GetOldDate.vbs for %%a in (*) do if "%%~ta" lss "%OldDate%" echo del "%%a" :: 本文全部用echo del代替del,只是顯示要刪除的文件,并不實際刪除。 pause goto :eof
上一篇:沒有了
欄 目:DOS/BAT
下一篇:cmd批處理中set /a和set /p的區(qū)別介紹
本文標(biāo)題:用批處理刪除N天前或指定日期時間(前后)創(chuàng)建(或修改)的文件
本文地址:http://mengdiqiu.com.cn/a1/DOS_BAT/10032.html
您可能感興趣的文章
- 01-10DOS下查看硬盤分區(qū)該使用什么命令
- 01-10使用批處理實現(xiàn)軟件的自動安裝以安裝搜狗拼音為例
- 01-10通過批處理修改DNS的代碼(推薦)
- 01-10windows使用批處理發(fā)布web到tomcat并啟動tomcat腳本分享
- 01-10再談DOS批處理下格式化日期字符串的三種方法(詳解)
- 01-10win7怎么設(shè)定關(guān)閉顯示器時間
- 01-10用批處理一鍵安裝兩種擴展名的Windows系統(tǒng)補丁
- 01-10ip地址切換批處理腳本分享
- 01-10批處理楊輝三角效果實現(xiàn)代碼
- 01-10Windows下寫一個文件備份腳本(專用備份的)


閱讀排行
本欄相關(guān)
- 01-10DOS下查看硬盤分區(qū)該使用什么命令
- 01-10使用批處理實現(xiàn)軟件的自動安裝以安
- 01-10后臺運行bat定時器程序示例分享
- 01-10通過批處理修改DNS的代碼(推薦)
- 01-10dota2服務(wù)器ping測試腳本分享
- 01-10再談DOS批處理下格式化日期字符串的
- 01-10windows使用批處理發(fā)布web到tomcat并啟動
- 01-10win7怎么設(shè)定關(guān)閉顯示器時間
- 01-10屏蔽up鍵禁止游戲運行腳本分享
- 01-10win7創(chuàng)建wifi熱點腳本分享
隨機閱讀
- 01-10C#中split用法實例總結(jié)
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11ajax實現(xiàn)頁面的局部加載