[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

回复 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

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

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

回复楼主:yyyy-MM-dd

TOP

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

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

你好 楼主 还是这个情况(if "09-07-12 04:04 " LEQ "2009-07-10"
并且不该删除的文件 提示也有删除

TOP

运行显示如下,制定三天前的,但是今天的文件也提示将被删除


E:\>rem 指定待删除文件的存放路径

E:\>set SrcDir=e:\crm

E:\>rem 指定天数

E:\>set DaysAgo=3

E:\>rem 假设日期格式为:星期一 2009-07-13

E:\>call ateToDays 2009 07 13 PassDays

E:\>setlocal ENABLEEXTENSIONS

E:\>set yy=2009  & set mm=07  & set dd=13

E:\>if 12009 LSS 200 if 12009 LSS 170 (set yy=202009 )  else (set yy=192009 )

E:\>set /a dd=10013%100,mm=10007%100

E:\>set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2

E:\>set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633

E:\>endlocal & set PassDays=14438  & goto :EOF

E:\>set /a PassDays-=3

E:\>call :DaysToDate 14435 DstYear DstMonth DstDay

E:\>setlocal ENABLEEXTENSIONS

E:\>set /a a=14435+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a

E:\>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

E:\>set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10

E:\>(if 7 LSS 10 set mm=07 )  & (if 10 LSS 10 set dd=010 )

E:\>endlocal & set DstYear=2009  & set DstMonth=07  & set DstDay=10  & goto :EOF


E:\>set DstDate=2009-07-10

E:\>for /R "e:\crm" %a in (*.*) do (if "%~ta" LEQ "2009-07-10" (if exist "%a" (e
cho del /f /q "%a" ) ) )

E:\>(if "08-10-30 08:21 " LEQ "2009-07-10" (if exist "e:\crm\20081030082017hjfor
est@技术规范确认书及项目明细.xls" (echo del /f /q "e:\crm\20081030082017hjforest
@技术规范确认书及项目明细.xls" ) ) )
del /f /q "e:\crm\20081030082017hjforest@技术规范确认书及项目明细.xls"

E:\>(if "08-10-30 08:27 " LEQ "2009-07-10" (if exist "e:\crm\20081030082615hjfor
est@华俊和集团车型对照表.xls" (echo del /f /q "e:\crm\20081030082615hjforest@华
俊和集团车型对照表.xls" ) ) )
del /f /q "e:\crm\20081030082615hjforest@华俊和集团车型对照表.xls"

E:\>(if "08-10-30 08:41 " LEQ "2009-07-10" (if exist "e:\crm\20081030083809hjlll
@营销服务部各岗位人员信息表.doc" (echo del /f /q "e:\crm\20081030083809hjlll@营
销服务部各岗位人员信息表.doc" ) ) )
del /f /q "e:\crm\20081030083809hjlll@营销服务部各岗位人员信息表.doc"

E:\>(if "09-07-12 04:04 " LEQ "2009-07-10" (if exist "e:\crm\mycrm50200907120400
00.bak" (echo del /f /q "e:\crm\mycrm5020090712040000.bak" ) ) )
del /f /q "e:\crm\mycrm5020090712040000.bak"

E:\>(if "09-07-13 04:04 " LEQ "2009-07-10" (if exist "e:\crm\mycrm50200907130400
00.bak" (echo del /f /q "e:\crm\mycrm5020090713040000.bak" ) ) )
del /f /q "e:\crm\mycrm5020090713040000.bak"

E:\>(if "09-07-11 14:46 " LEQ "2009-07-10" (if exist "e:\crm\新建 WPS演示 演示文
稿.dps" (echo del /f /q "e:\crm\新建 WPS演示 演示文稿.dps" ) ) )
del /f /q "e:\crm\新建 WPS演示 演示文稿.dps"

E:\>pause
请按任意键继续 . . .

TOP

回复 22楼 的帖子

能否把以下注册表分支导出来,传到论坛上来看看:
HKEY_CURRENT_USER\Control Panel\International\
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

截图如下两图片

TOP

回复 25楼 的帖子

dir命令的结果如何呢?

C:\Test>dir
驱动器 C 中的卷没有标签。
卷的序列号是 9033-65A2

C:\Test 的目录

2009-07-06  21:13    <DIR>          .
2009-07-06  21:13    <DIR>          ..
2009-07-06  21:21                11 test.bat
2009-07-06  21:03                 0 新建 文本文档.tx.jpg
2009-07-06  21:03                 0 新建 文本文档.txt.jpg
               3 个文件             11 字节
               2 个目录 15,391,432,704 可用字节


把sShortDate改成yyyy-M-d再试试?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

请教下LZ,能不能按小时来删除呢
在线等,谢谢先了

TOP

回复 27楼 的帖子

小时的计算跟天数的计算非常类似,可以参照方案二的思路,调用 Ritchie Lawrence 批处理函数库中的代码:
http://bbs.bathome.net/thread-3056-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

先谢过了



call ateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays

: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

%date:~0,4% %date:~5,2% %date:~8,2%  它是根据什么结论获取来的,另reg里面的内容格式是否会有变动?(小时制,目前只能用分钟替代小时)  另如果分钟的时间太长 会不会出现时间差呢?

[ 本帖最后由 kingwu 于 2009-8-12 22:51 编辑 ]

TOP

回复 29楼 的帖子

根据系统日期格式为yyyy-mm-dd来获取
有可能
不会
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表