用批處理刪除N天前或指定日期時(shí)間(前后)創(chuàng)建(或修改)的文件
更新時(shí)間:2016年11月12日 23:15:08 投稿:mdxy-dxy
這篇文章主要介紹了用批處理刪除N天前或指定日期時(shí)間(前后)創(chuàng)建(或修改)的文件,需要的朋友可以參考下
核心代碼:
@echo off :: by oicu#lsxk.org :: 15:17 2011-1-13 :: 如果只是刪除指定日期或N天前修改的文件,用forfiles即可 FORFILES /P "C:\測(cè)試目錄" /S /M *.log /D -3 /C "cmd /c if @isdir==FALSE echo del @file" :: 指定日期(包含)前修改的文件:/D -yyyy/mm/dd :: 以下是流水賬 :: 使用限制:控制面板里設(shè)定日期格式為中文(中國(guó)) :: 只有dir /tc才能查看到文件創(chuàng)建時(shí)間,默認(rèn)dir都是dir /tw :: 為了取出創(chuàng)建時(shí)間,只好用兩次for+find,肯定很慢。 cd /d 你的目錄 :: 如果要包含子目錄,用for /r . %%a in (*) :: 顯示文件修改時(shí)間 for %%a in (*) do echo "%%~ta" :: 中文格式時(shí)相當(dāng)于 for %%a in (*) do for /f "tokens=1,2* delims= " %%b in ( 'dir /tw "%%a" ^| find /i "%%~nxa"' ) do echo "%%b %%c" :: 刪除某個(gè)時(shí)間后修改過(guò)的文件(這個(gè)簡(jiǎn)單) for %%a in (*) do if "%%~ta" gtr "2008-04-01" echo del "%%a" :: 這個(gè)才是顯示文件創(chuàng)建時(shí)間 for %%a in (*) do for /f "tokens=1,2* delims= " %%b in ( 'dir /tc "%%a" ^| find /i "%%~nxa"' ) do echo "%%b %%c" :: 刪除某個(gè)時(shí)間之后創(chuàng)建的文件,如果要?jiǎng)h除某個(gè)時(shí)間之前創(chuàng)建的,更改兩 :: 處gtr為lss。除了日期外,增加判斷時(shí)間,可以去掉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" ) ) :: 用批處理計(jì)算時(shí)間受到系統(tǒng)的日期格式限制,影響到用set取某一字段的值, :: 批處理計(jì)算時(shí)間方法過(guò)于復(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里沒(méi)有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,只是顯示要?jiǎng)h除的文件,并不實(shí)際刪除。 pause goto :eof
您可能感興趣的文章:
- 用PowerShell刪除N天前或指定日期(前后)創(chuàng)建(或修改)的文件
- linux如何定時(shí)刪除N天前的文件(文件夾)
- shell腳本實(shí)現(xiàn)定時(shí)刪除文件或文件夾
- Java實(shí)現(xiàn)文件夾中內(nèi)容定時(shí)刪除
- 定時(shí)刪除一個(gè)文件夾內(nèi)的所有子文件夾和文件的方法
- php定時(shí)刪除文件夾下文件(清理緩存文件)
- cmd forfiles 從文件夾或樹(shù)中選擇要進(jìn)行批處理的文件(方便批量刪除n天前的文件)
- cmd rd命令 刪除文件夾
- Windows定時(shí)刪除指定路徑下N天前的文件以及文件夾(腳本之家修正版)
相關(guān)文章
一個(gè)“靈異”批處理引發(fā)的思考加補(bǔ)充說(shuō)明
這個(gè)語(yǔ)句讓偶理解了好半天: 我們知道批處理在運(yùn)行過(guò)程中,在讀取每條語(yǔ)句/執(zhí)行每個(gè)命令都會(huì)擴(kuò)充一次語(yǔ)句/命令里的變量。 我們來(lái)看看這個(gè)例子發(fā)生了什么事情:2008-05-05批處理下載FTP服務(wù)器上指定分鐘數(shù)之前的文件
今天從論壇看到有人想通過(guò)bat從FTP上獲取當(dāng)前時(shí)間之前一段時(shí)間內(nèi)信息的批處理,正好發(fā)現(xiàn)了這篇文章,特分享下2014-07-07cmd forfiles 從文件夾或樹(shù)中選擇要進(jìn)行批處理的文件(方便批量刪除n天前的文件)
從文件夾或樹(shù)中選擇要進(jìn)行批處理的文件(方便批量刪除n天前的文件),最好附上一些實(shí)例代碼,方便大家學(xué)習(xí)2012-05-05