批量删除指定子文件夹的dos命令

上传人:kms****20 文档编号:40895262 上传时间:2018-05-27 格式:DOC 页数:13 大小:41.50KB
返回 下载 相关 举报
批量删除指定子文件夹的dos命令_第1页
第1页 / 共13页
批量删除指定子文件夹的dos命令_第2页
第2页 / 共13页
批量删除指定子文件夹的dos命令_第3页
第3页 / 共13页
批量删除指定子文件夹的dos命令_第4页
第4页 / 共13页
批量删除指定子文件夹的dos命令_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《批量删除指定子文件夹的dos命令》由会员分享,可在线阅读,更多相关《批量删除指定子文件夹的dos命令(13页珍藏版)》请在金锄头文库上搜索。

1、批量删除指定子文件夹的批量删除指定子文件夹的 DOSDOS 命令命令在服务器建了个批处理文件定期备份论坛的数据库,保存到 G:论坛数据库 ,以 数据库备份_20091024 这种格式按日期备份,每 5天备份一次echo offnet stop mysqlset fromdir=G:Program Filesmysqldatabccnset todir=G:论坛数据库set mydir=%todir%mysql_data_%date:0,4%date:5,2%date:8,2%md %mydir%xcopy %fromdir%* %mydir% /enet start mysqlG:Progra

2、m Filesmysqldatabccn 和 G:论坛数据库 分别为备份的源路径和目标路径。代码中的路径只是示例2222222222222222222222222222222222222222echo off title 编程论坛批量删除备份数据库 DOS 程序 color 37 :First cls echo. echo 欢迎使用编程论坛批量删除备份数据库 DOS 程序 echo. echo echo. echo. echo. echo. echo 目录规则如从 数据库备份_19990101 到 数据库备份_29991231 之间的所有循环目录。 echo 注意:年份和日期都是四位数字。 e

3、cho. goto Date :Date echo. set /p m=请输入四位数的年(如 2009) : echo. set /p d1=请输入起始日期(如 0101) : set /p d2=请输入终止日期(如 1231) : echo. echo 继续操作将 删除 当前目录下从 数据库备份_%m%d1% 到 数据库备份_%m%d2% 之间的所有目录。 echo. set /p go=你确认继续下一步操作吗?(Y/N): if %go%=y goto Do else goto Begin if %go%=Y goto Do else goto Begin goto Begin :Begi

4、n echo. set /p go=您要继续执行批量删除操作吗?(Y/N): if %go%=y goto Date else goto Begin if %go%=Y goto Date else else goto Begin exit :Do echo. echo 正在执行 删除 操作,请稍后. for /l %i in (%d1%,1,%d2%) do if %i LSS 1000 (rd 数据库备份_%m%j%0%i /s /q) else rd 数据库备份_%m%i /s /q echo. echo 删除目录 操作执行完毕,请检查执行效果! echo. goto Begin请将上述

5、代码存为.bat 文件,放在“G:论坛数据库”目录下,运行即可.对于只读文件夹能否删除,我没有测试。呵呵。33333333333333333333333333333333333333333333333333: cosdos 2009/10/25: - 以 Windows 当前系统日期为基础。: - 例当前系统日期:2009/10/25,则删除: - 所有以“数据库备份_”开头,后缀日期: - 小于等于“20090925”的所有文件加。Echo offSetlocal EnableDelayedExpansionTitle 删除当前目录中,上个月的“数据库备份_”文件夹: cosdos 2009

6、/10/25Call :mainPauseExit:LastMonthSet /a yyyy=%1+10000Set /a mm=%2+100Set /a dd=%3+100If “%2“ = “01“ (Set mm=112 & Goto year) else (Set /a mm-=1 & Set lastmonthday=%yyyy:1,4%!mm:1,2!%dd:1,2%)Exit /b:yearSet /a yyyy-=1Set lastmonthday=%yyyy:1,4%mm:1,2%dd:1,2%Exit /b:mainSet myfolder=数据库备份_Set yyyy=%

7、date:0,4%Set mm=%date:5,2%Set dd=%date:8,2%Call:LastMonth %yyyy% %mm% %dd%Echo.Echo 删除当前目录中, “%myfolder%lastmonthday%”之前的文件夹For /d %i in (数据库备份_*) do (Set folderdate=%i&if /i !folderdate:-8! lEQ %lastmonthday% rd /s /q %i)Exit /b44444444444444444444444444444444444444444444444444444444444echo off :演示

8、:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件。 :如果演示结果无误,把 del 前面的 echo 去掉,即可实现真正删除。:本例调用了临时 VBS 代码进行日期计算 :本例为兼容不同的日期格式,调用 reg 命令(XP 系统自带)统一设置日期格式, :处理完毕之后再把日期格式恢复成原来的状态。 rem 指定待删除文件的存放路径 set SrcDir=C:TestBatHome rem 指定天数 set DaysAgo=1 for /f “skip=2 delims=“ %a in (reg query “HKEY_CURRENT_USERControl PanelIntern

9、ational“ /v sShortDate) do ( set “RegDateOld=%a“ ) set RegDateOld=%RegDateOld:-8% reg add “HKEY_CURRENT_USERControl PanelInternational“ /v sShortDate /t REG_SZ /d yyyy-M-d /fnul “%temp%DstDate.vbs“ echo LastDate=date()-%DaysAgo% “%temp%DstDate.vbs“ echo FmtDate=right(year(LastDate),4) & right(“0“ &

10、month(LastDate),2) & right(“0“ & day(LastDate),2) “%temp%DstDate.vbs“ echo wscript.echo FmtDate for /f %a in (cscript /nologo “%temp%DstDate.vbs“) do ( set “DstDate=%a“ ) set DstDate=%DstDate:0,4%-%DstDate:4,2%-%DstDate:6,2% for /r “%SrcDir%“ %a in (*.*) do ( if “%ta“ leq “%DstDate%“ ( if exist “%a“

11、 ( echo del /f /q “%a“ ) ) ) reg add “HKEY_CURRENT_USERControl PanelInternational“ /v sShortDate /t REG_SZ /d %RegDateOld% /fnul pause 【方案二】删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件:BAT + REG + Ritchie Lawrence 日期函数 复制内容到剪贴板代码: echo off :演示:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件。 :如果演示结果无误,把 del 前面的 echo 去掉,即可实现真正删除。:

12、本例调用了 Ritchie Lawrence 的日期函数进行日期计算 :日期转换的核心算法请参考 http:/ :本例为兼容不同的日期格式,调用 reg 命令(XP 系统自带)统一设置日期格式, :处理完毕之后再把日期格式恢复成原来的状态。 rem 指定待删除文件的存放路径 set SrcDir=C:TestBatHome rem 指定天数 set DaysAgo=1 for /f “skip=2 delims=“ %a in (reg query “HKEY_CURRENT_USERControl PanelInternational“ /v sShortDate) do ( set “Re

13、gDateOld=%a“ ) set RegDateOld=%RegDateOld:-8% reg add “HKEY_CURRENT_USERControl PanelInternational“ /v sShortDate /t REG_SZ /d yyyy-M-d /fnul call :DateToDays %date:0,4% %date:5,2% %date:8,2% PassDays reg add “HKEY_CURRENT_USERControl PanelInternational“ /v sShortDate /t REG_SZ /d %RegDateOld% /fnul

14、 set /a PassDays-=%DaysAgo% call :DaysToDate %PassDays% DstYear DstMonth DstDay set DstDate=%DstYear%-%DstMonth%-%DstDay% for /r “%SrcDir%“ %a in (*.*) do ( if “%ta“ leq “%DstDate%“ ( if exist “%a“ ( echo del /f /q “%a“ ) ) ) reg add “HKEY_CURRENT_USERControl PanelInternational“ /v sShortDate /t REG

15、_SZ /d %RegDateOld% /fnul pause goto :eof :DateToDays %yy% %mm% %dd% days setlocal ENABLEEXTENSIONS set yy=%1&set mm=%2&set dd=%3 if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%) set /a dd=100%dd%100,mm=100%mm%100 set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2 set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633 endlocal&set %4=%j%&goto :EOF :DaysToDate %days% yy mm dd setlocal ENABLEEXTENSIONS set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5 set /a dd=-

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号