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

[日期时间] 批处理怎样计算两个日期之间相差的天数?这个数字用来跟另一个数字做比较

遇到一个难题,一整个流程是这样的,我需要将文件复制到两个文件夹,使用任务计划来实现每周一次,然后数据保留两个星期,在第三个星期的时候覆盖掉第一个星期的数据,这样子一直下去,我的想法是要执行复制的那一天的日期分别与两个文件夹里的文件的最后修改时间做减法,哪个文件夹的时间>10天,就覆盖掉哪个文件夹里的数据,可是我不知道怎么做这个减法命令操作。我看到站里有一些类似的问题,可是它们都达不到我的要求,所以发帖请求帮助,希望大佬们帮我看看

如果你的两个目标文件夹是在同一个目录中的话,就很简单。
先定位到目标文件夹所在的目录。
  1. dir /b /ad /od
复制代码
第一个显示的文件夹就是你要操作的文件夹。

TOP

回复 2# qixiaobin0715
不在同一个文件夹下的

TOP

换一种思路:
下载如下第3方工具: http://bcn.bathome.net/tool/find64.exe
并复制到目标文件夹备用。

在全部复制文件到目标文件夹后,执行
  1. find64 . -type f -mtime +10 -delete
复制代码
即可

TOP

回复 4# hfxiang
好嘞,这就去试试

TOP

回复 1# ethan.huang
  1. @echo off
  2. set "DateA=2022-08-17"
  3. set "DateB=2022-08-05"
  4. call :DateToDays %DateA:~0,4% %DateA:~5,2% %DateA:~8,2% DaysX
  5. call :DateToDays %DateB:~0,4% %DateB:~5,2% %DateB:~8,2% DaysY
  6. set /a DayZ=DaysX-DaysY
  7. echo %DateA%和%DateB%间隔的天数是:%DayZ%
  8. pause
  9. goto :eof
  10. :DateToDays %yy% %mm% %dd% days
  11. setlocal ENABLEEXTENSIONS
  12. set yy=%1&set mm=%2&set dd=%3
  13. if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
  14. set /a dd=100%dd%%%100,mm=100%mm%%%100
  15. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  16. set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
  17. endlocal&set %4=%j%&goto :EOF
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表