批处理怎么比较文件最后修改时间和当前时间?

要写个批处理,获取指定文件的最后修改时间,并和当前时间比较,如果最后修改时间在30分钟之前,要输出一个警告信息。... 要写个批处理,获取指定文件的最后修改时间,并和当前时间比较,如果最后修改时间在30分钟之前,要输出一个警告信息。 展开
 我来答
xxpinqz
2013-07-22 · TA获得超过1323个赞
知道小有建树答主
回答量:1055
采纳率:0%
帮助的人:1313万
展开全部

没那么简单判断分钟就能解决的,如果跨小时,跨天,月,年呢?

@echo off&setlocal enabledelayedexpansion
set "fn=e:\123\abc\a1.txt"
:loop
for %%a in ("%fn%") do (
  if exist "%fn%" (
    for /f "tokens=1-10 delims=/-: " %%i in ("%%~ta !date:~,10! !time:~,5!") do (
      set/a y1=%%i,m1=1%%j%%100,d1=1%%k%%100,h1=1%%l%%100,f1=1%%m%%100,y2=%%n,m2=1%%o%%100,d2=1%%p%%100,h2=1%%q%%100,f2=1%%r%%100
      set /a "f=(1461*(y2+(m2-14)/12)/4+367*(m2-2-(m2-14)/12*12)/12-3*((y2+(m2-14)/12)/100+1)/4-1461*(y1+(m1-14)/12)/4-367*(m1-2-(m1-14)/12*12)/12+3*((y1+(m1-14)/12)/100+1)/4-d1+d2)*1440+(h2-h1)*60+f2-f1"
      if !f! geq 30 (
       echo 当前时间:【!date:~,10! !time:~,5!】距离上次修改时间:【%%~ta】已过半个小时
       echo 其它超过30分钟需要运行的代码加在这里...
      )
    )
  )
)
rem 延迟大约30秒后再次判断
ping /n 30 127.1 >nul
goto :loop
jd08139
推荐于2016-05-18 · TA获得超过3734个赞
知道大有可为答主
回答量:2174
采纳率:66%
帮助的人:2852万
展开全部
@ECHO OFF
REM 获取文件修改时间
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "skip=1 tokens=1,3,5 delims=. " %%a in ('wmic datafile where name^="R:\\Test22\\新建文本文档.txt" get LastModified') do (
IF %%a LSS 0 GOTO end
set a=%%a
SET /a b=%time:~3,2%-!a:~10,2!
IF !b! lss 0 (SET /a b=%time:~3,2%+60-!a:~10,2!)
IF !b! gtr 30 ECHO !b! 文件修改时间在30分钟前
)
:end
PAUSE

假设指定的文件为 新建文本文档.txt.

更多追问追答
追问
直接复制你的代码,改了下文件名,运行起来不管什么文件都是“请按任意键继续”
追答

额 那是因为比较文件时间后小于40分钟,所不显示,你需要找个修改时间和系统时间相差30分钟的文件.

@ECHO OFF
REM 获取文件修改时间
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "skip=1 tokens=1,3,5 delims=. " %%a in ('wmic datafile where name^="R:\\Test22\\新建文本文档.txt" get LastModified') do (
IF %%a LSS 0 GOTO end
set a=%%a
SET /a b=%time:~3,2%-!a:~10,2!
IF !b! lss 0 (SET /a b=%time:~3,2%+60-!a:~10,2!)
IF !b! gtr 30 ECHO !b! 文件修改时间在30分钟前
echo 和当前系统相差!b!分钟
)
:end
PAUSE
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-22
展开全部
@echo off
set file="d:\1.txt"
for /f "tokens=1,2" %%i in ('dir /tw %file%^|find "/"') do for /f %%k in (
'^>"%tmp%\_tmp.vbs" echo,wscript.echo datediff("n"^,"%%i %%j"^,"%date:~0,10% %time:~0,8%"^)^&^&cscript //nologo "%tmp%\_tmp.vbs"^&^&del /f /a /q "%tmp%\_tmp.vbs"'
) do if %%k gtr 30 echo 警告!最后修改时间在%%k分钟之前...
pause
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式