Board logo

标题: [文件操作] 批处理实现文件时间判断的问题 [打印本页]

作者: chouxia    时间: 2015-8-26 16:23     标题: 批处理实现文件时间判断的问题

  1. cd \1aep
  2. set jobid=
  3. v:\run\echox -c 74 "%date%%time%孤立TXT处理标志位"
  4. for %%a in (*.txt) do (
  5. set list=%%a
  6. timeout -t 2 >nul
  7. for /f "tokens=1,2 delims=:. " %%i in ("!time!") do (
  8. if %%i lss 10 (set h=10%%i) else (set h=1%%i)
  9. if %%j lss 10 (set s=10%%j) else (set s=1%%j)
  10. set /a "sysTime=(!h!-100)*60+(!s!-100)"
  11. )
  12. for /f "tokens=4,5 delims=:-/ " %%j in ("%%~ta") do (set /a "fileTime=(1%%j-100)*60+(1%%k-100)")
  13. set /a dtime=!sysTime!-!fileTime!
  14. if !dtime! lss 0 (set /a dtime=!dtime:~1!)
  15. if !dtime! gtr !zhi! (
  16. echo 系统时间:!sysTime! 文件时间:!fileTime! 间隔:!dtime! 发现孤立文件!!list!
  17. for /f "tokens=1,2,* delims==" %%a in ('findstr /ibc:"num" !list!') do (set num=%%b)
  18. for /f "tokens=1,2,* delims==" %%a in ('findstr /ibc:"lab" !list!') do (set aepname=%%b)
  19. for /f "tokens=1,2,3,4,5,6,7,8 delims=\"  %%q in ('findstr /ibc:"Path" !list!') do (set ppath=%%u)
  20. for /l %%a in (1,1,!num!) do (
  21. for /f "tokens=1,* delims=="  %%a in ('findstr /c:"JobID%%a" %aepath%\!list!') do (set jobid=%%b)
  22. echo AEP文件名:!aepname! 订单号:!ppath! 任务数:!num!
  23. call :fenxi
  24. )
  25. )
  26. )
  27. goto 4th
复制代码
代码本身有一个问题:当符合条件的文件和不符合条件的文件都存在的时候,这段代码会把不符合条件的文件名也送入fenxi子过程。
应该怎么调整呢?
作者: xudaweb    时间: 2015-8-26 17:10

回复 1# chouxia

在逻辑判断的地方加入goto :eof ?
大概看了一遍,没看懂。。。能否把验证的文件弄成附件给大家验证呢?
作者: chouxia    时间: 2015-8-26 17:37

17-22行不重要。
这部分代码的意思是
取当前目录下所有txt文件的修改时间并和系统当前时间进行比较
超出一定的值以后走17-22行获取变量 然后call fenxi
现在的问题是第15行if !dtime! gtr !zhi! 有问题
不符合条件的txt文件也会通过




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