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


    谢谢你的回复,我使用你的代码测试了,输入不同的日期后,有时能删除,有时不能删除(就是说有时能删一个,有时能正确全删,有时没反应),输入的日期我是按 “0000-00-00” 的格式输入的。 我把set qd=2022-11-30 这样直接定义后测试没有效果。

TOP

回复 11# hfxiang


   谢谢你的回复,这个象是linux上的find命令,它也是按修改时间来计算的。我的本意是要用目录的日期形式来判断而进行删除。不是根据目录的创建或修改时间来删除。当然,用时间来计算可以作为最后一种方法来考虑使用,毕竟原备份出来的目录时间是每天的固定时间。
我也测试了下,还是不准确,会存在误删的情况

TOP

请确认以下三点》
一、目录名须是 20??-??-?? 十位带前导零的格式
二、变量qd的输入值格式也须如上所述,且不能用双引号包裹
三、请用最新的简化版代码

TOP

回复 15# xiaoyuwxz


试试7楼的方法
读一读方案5代码上面的那段话:
根据日期出现在文件夹名称中的具体位置,调整第24行字符串截取。
具体语法请参考参考set命令教程第8页
http://bbs.bathome.net/thread-31727-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

回复 19# Batcher


    完全可以了,谢谢!

TOP

回复 17# xiaoyuwxz


最初没有完全理解题意 ,现在知道了 。以下方法应该完全满足要求,只是稍为复杂了些
  1. @echo off & setlocal enabledelayedexpansion
  2. call :GetDate y m d
  3. call :DateToDays %y% %m% %d% days1
  4. @for /f "tokens=1-3 delims=-" %%a in ('dir /b/ad') do (
  5. call :DateToDays %%a %%b %%c days2
  6. set/a days=days1-days2
  7. if !days! GEQ 30 rd /q /s "%%~fa-%%b-%%c"
  8. )
  9. endlocal
  10. exit/b
  11. :DateToDays %yy% %mm% %dd% days
  12. setlocal ENABLEEXTENSIONS
  13. set yy=%1&set mm=%2&set dd=%3
  14. if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
  15. set /a dd=100%dd%%%100,mm=100%mm%%%100
  16. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  17. set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
  18. endlocal&set %4=%j%&goto :EOF
  19. :GetDate yyyy mm dd
  20. setlocal ENABLEEXTENSIONS
  21. set "first="
  22. for /f "tokens=1-3 delims=.-/ " %%a in ('date/t') do (
  23. if not defined first set first=1&set yy=%%a&set mm=%%b&set dd=%%c)
  24. endlocal&set %1=%yy%&set %2=%mm%&set %3=%dd%&goto :EOF
复制代码

TOP

回复 21# hfxiang


    这代码相当好,测试完全正确。太谢谢了!

TOP

返回列表