[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
你好 楼主 还是这个情况(if "09-07-12 04:04 " LEQ "2009-07-10"
并且不该删除的文件 提示也有删除

TOP

回复 20楼 的帖子

  1. @echo off
  2. ::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
  3. rem 指定待删除文件的存放路径
  4. set SrcDir=C:\Test\BatHome
  5. rem 指定天数
  6. set DaysAgo=1
  7. rem 假设日期格式为:星期一 2009-07-13
  8. call :DateToDays %date:~4,4% %date:~9,2% %date:~12,2% PassDays
  9. set /a PassDays-=%DaysAgo%
  10. call :DaysToDate %PassDays% DstYear DstMonth DstDay
  11. set DstDate=%DstYear%-%DstMonth%-%DstDay%
  12. for /r "%SrcDir%" %%a in (*.*) do (
  13.   if "%%~ta" leq "%DstDate%" (
  14.     if exist "%%a" (
  15.       echo del /f /q "%%a"
  16.     )
  17.   )
  18. )
  19. pause
  20. goto :eof
  21. :DateToDays %yy% %mm% %dd% days
  22. setlocal ENABLEEXTENSIONS
  23. set yy=%1&set mm=%2&set dd=%3
  24. if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
  25. set /a dd=100%dd%%%100,mm=100%mm%%%100
  26. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  27. set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
  28. endlocal&set %4=%j%&goto :EOF
  29. :DaysToDate %days% yy mm dd
  30. setlocal ENABLEEXTENSIONS
  31. set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
  32. 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
  33. set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
  34. (if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
  35. endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

运行,cmd,echo %date%,显示格式为:星期一  2009-07-13

TOP

回复楼主:yyyy-MM-dd

TOP

回复 17楼 的帖子

打开注册表编辑器,看看这个键值是什么样子的:
HKEY_CURRENT_USER\Control Panel\International\sShortDate
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

请教楼主,我的系统2000 SERVER ,日期格式为星期六 2009-07-11 ,怎么实现 利用方案三,出现日期判断不正确的现象“E:\>(if "09-07-11 14:46 " LEQ "2009-07-05" ”,如何批处理实现?谢谢!

TOP

回复 15楼 的帖子

非常可惜的是,你猜错了。
顶楼说的很清楚,日期函数是 Ritchie Lawrence 写的。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 Batcher 于 2009-6-12 13:13 发表
@echo off
::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
rem 指定待删除文件的存放路径
set SrcDir=C:\Test
rem 指定天数
set DaysAgo=7
rem 假设日期格式为:2009-06-12 星期五
call ate ...


如果我猜的没错的话...这个是 cn-dos 联盟里面的吧...

TOP

完全ok了,楼主的功力不是一般的强啊,拜服~~~~~~

TOP

回复 12楼 的帖子

  1. @echo off
  2. ::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
  3. rem 指定待删除文件的存放路径
  4. set SrcDir=E:\123123
  5. rem 指定天数
  6. set DaysAgo=15
  7. rem 假设日期格式为:2009-06-12 星期五
  8. call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays
  9. set /a PassDays-=%DaysAgo%
  10. call :DaysToDate %PassDays% DstYear DstMonth DstDay
  11. set DstDate=%DstYear%-%DstMonth%-%DstDay%
  12. for /f "delims=/" %%a in ('dir /b /a-d "%SrcDir%\????-??-??"') do (
  13.   if "%%a" leq "%DstDate%" (
  14.     echo del /a /f /q "%SrcDir%\%%a"
  15.   )
  16. )
  17. pause
  18. goto :eof
  19. :DateToDays %yy% %mm% %dd% days
  20. setlocal ENABLEEXTENSIONS
  21. set yy=%1&set mm=%2&set dd=%3
  22. if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
  23. set /a dd=100%dd%%%100,mm=100%mm%%%100
  24. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  25. set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
  26. endlocal&set %4=%j%&goto :EOF
  27. :DaysToDate %days% yy mm dd
  28. setlocal ENABLEEXTENSIONS
  29. set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
  30. 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
  31. set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
  32. (if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
  33. endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

补充,我修改的bat内容如下:
@echo off
::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
rem 指定待删除文件的存放路径
set SrcDir=E:\123123
rem 指定天数
set DaysAgo=15
rem 假设日期格式为:2009-06-12 星期五
call ateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays
set /a PassDays-=%DaysAgo%
call :DaysToDate %PassDays% DstYear DstMonth DstDay
set DstDate=%DstYear%-%DstMonth%-%DstDay%

for /f "delims=/" %%a in ('dir /b /a-d "%SrcDir%"') do (
  if "%%a" leq "%DstDate%" (
    echo del /a /f /q "%SrcDir%\%%a"
  )
)
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=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF

TOP

详见附件。
这个bat还多删除了两个其它文件,请判断,辛苦啦。

原始目录内容如下:
驱动器 E 中的卷没有标签。
卷的序列号是 13A4-CA45

E:\123123 的目录

2009-06-12  14:12    <DIR>          .
2009-06-12  14:12    <DIR>          ..
2009-06-12  14:12                 0 1.txt
2009-05-20  11:47            20,609 2009-05-24
2009-05-20  11:47            20,609 2009-05-25
2009-05-20  11:47            20,609 2009-05-26
2009-05-20  11:47            20,609 2009-05-27
2009-05-20  11:47            20,609 2009-05-28
2009-05-20  11:47            20,609 2009-05-29
2009-05-20  11:47            20,609 2009-05-30
2009-05-20  11:47            20,609 2009-05-31
2009-05-20  11:47            20,609 2009-06-01
2009-05-20  11:47            20,609 2009-06-02
2009-05-20  11:47            20,609 2009-06-03
2009-05-20  11:47            20,609 2009-06-04
2009-05-20  11:47            20,609 2009-06-05
2009-05-20  11:47            20,609 2009-06-06
2009-05-20  11:47            20,609 2009-06-07
2009-05-20  11:47            20,609 2009-06-08
2009-05-20  11:47            20,609 2009-06-09
2009-05-20  11:47            20,609 2009-06-10
2009-05-20  11:47            20,609 2009-06-11
2009-05-20  11:47            20,609 2009-06-12
2004-07-21  07:48        18,331,779 Oracle 9i中文版实用培训教程.pdf
2005-07-13  23:32        19,664,908 Oracle备份与恢复培训教程.pdf
2008-10-14  11:24           480,909 S60_Platform_FAQ_v1_12_en.pdf
2004-10-02  09:49            44,032 UnMakeSIS.exe
2008-03-24  13:03         8,838,445 wolf学习笔记.pdf
2002-03-05  06:01         7,714,572 XML编程从入门到精通.pdf
2008-10-14  10:54           127,544 x_S60.sis
2008-09-10  13:19        36,601,098 [买股票,找这样的公司就对了].pdf
2005-01-13  10:02           651,487 《管理就这么简单》.pdf
2008-10-04  19:03         2,430,968 公司OA考勤管理系统.rar
2009-02-04  00:45           207,872 生意架构__2003.xls
2008-10-13  13:05         8,594,865 非C程序员C++入门自学教程.PDF
              33 个文件    104,100,659 字节

TOP

回复 8楼 的帖子

  1. @echo off
  2. ::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
  3. rem 指定待删除文件的存放路径
  4. set SrcDir=C:\Test
  5. rem 指定天数
  6. set DaysAgo=7
  7. rem 假设日期格式为:2009-06-12 星期五
  8. call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays
  9. set /a PassDays-=%DaysAgo%
  10. call :DaysToDate %PassDays% DstYear DstMonth DstDay
  11. set DstDate=%DstYear%-%DstMonth%-%DstDay%
  12. for /f "delims=/" %%a in ('dir /b /a-d "%SrcDir%"') do (
  13.   if "%%a" leq "%DstDate%" (
  14.     echo del /a /f /q "%SrcDir%\%%a"
  15.   )
  16. )
  17. pause
  18. goto :eof
  19. :DateToDays %yy% %mm% %dd% days
  20. setlocal ENABLEEXTENSIONS
  21. set yy=%1&set mm=%2&set dd=%3
  22. if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
  23. set /a dd=100%dd%%%100,mm=100%mm%%%100
  24. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  25. set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
  26. endlocal&set %4=%j%&goto :EOF
  27. :DaysToDate %days% yy mm dd
  28. setlocal ENABLEEXTENSIONS
  29. set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
  30. 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
  31. set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
  32. (if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
  33. endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

在线等。。。。。。。。。。。

TOP

专门定制?呵呵,谢谢楼主了!!
文件名字举例:今天生成的就是“2009-06-12”,昨天的是“2009-06-11”,没有扩展名,以此类推。
注意该目录下还有很多其它文件不能删哦

TOP

返回列表