Board logo

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

作者: ethan.huang    时间: 2022-8-16 14:53     标题: 批处理怎样计算两个日期之间相差的天数?这个数字用来跟另一个数字做比较

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

如果你的两个目标文件夹是在同一个目录中的话,就很简单。
先定位到目标文件夹所在的目录。
  1. dir /b /ad /od
复制代码
第一个显示的文件夹就是你要操作的文件夹。
作者: ethan.huang    时间: 2022-8-16 15:37

回复 2# qixiaobin0715
不在同一个文件夹下的
作者: hfxiang    时间: 2022-8-16 16:10

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

在全部复制文件到目标文件夹后,执行
  1. find64 . -type f -mtime +10 -delete
复制代码
即可
作者: ethan.huang    时间: 2022-8-16 16:31

回复 4# hfxiang
好嘞,这就去试试
作者: Batcher    时间: 2022-8-17 19:10

回复 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
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2