找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 33920|回复: 12

[日期时间] 批处理如何实现判断自身先后两次的执行/运行的日期差是否超过指定天数

[复制链接]
发表于 2015-7-6 10:38:05 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-11-4 16:28 编辑

第1次登陆,记录日期,以后登陆对比,有没有超过7天。这个批处理怎么写?
发表于 2015-7-6 10:43:44 | 显示全部楼层
打开CMD窗口,执行命令:
  1. echo %date%
复制代码
结果发出来看看
 楼主| 发表于 2015-7-6 11:09:12 | 显示全部楼层
回复 2# DAIC


    C:\Users\Administrator>echo %date%
2015/07/06 周一
发表于 2015-7-6 19:15:43 | 显示全部楼层
回复 1# 单车少男


    "登录"何意,运行批处理还是登录某个软件?如果是某个软件,你在批处理中是怎么调用的?
 楼主| 发表于 2015-7-7 13:22:46 | 显示全部楼层
回复 4# pcl_test


    就是下次运行。
发表于 2015-7-7 16:08:40 | 显示全部楼层
回复 5# 单车少男


    真捉急,你说的“运行”是何意?是指用户登陆系统,还是指调用某个程序呢?
 楼主| 发表于 2015-7-8 11:00:45 | 显示全部楼层
回复 6# CrLf


    就是,执行bat文件
发表于 2015-7-8 11:45:47 | 显示全部楼层
本帖最后由 pcl_test 于 2019-10-27 00:31 编辑
  1. @echo off& setlocal enabledelayedexpansion
  2. for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do set "d=%%a"
  3. set "d=%d:~,4%-%d:~4,2%-%d:~6,2%"
  4. ::设置有效天数
  5. set n=7
  6. for /f "tokens=3" %%a in ('reg query HKCU /v WriteDate 2^>nul^|findstr "[0-9]"') do set "t=%%a"
  7. >"%tmp%\v.v" echo;d=DateAdd("d", Clng(WSH.Arguments(0)), WSH.Arguments(1)):WSH.echo right(year(d),4) ^& right("0" ^& month(d),2) ^& right("0" ^& day(d),2)

  8. if defined t (
  9.     for /f "delims=" %%a in ('cscript -nologo -e:vbscript "%tmp%\v.v" %n% %t%') do set "nd=%%a"
  10.     echo;首次运行日期%t%
  11.     echo;有效期%n%天(即到!nd:~,4!-!nd:~4,2!-!nd:~6,2!)
  12.     echo;当前日期%d%
  13.     echo;
  14.     set "d=%d:-=%"
  15.     if !d! lss !nd! (
  16.           echo;状态:未过期
  17.     ) else if !d! equ !nd! (
  18.           echo;状态:已到期
  19.     ) else (
  20.           echo;状态:已过期
  21.           set /p c=^>^>是否重置首次运行日期[Y/N]:
  22.           if /i "!c!" equ "y" (reg delete HKCU /v WriteDate /f))
  23. ) else (
  24.     reg add HKCU /v WriteDate /t REG_SZ /d %d% /f
  25.     echo;首次运行日期%d%,已记录
  26. )
  27. >nul ping /n 3 0
  28. pause
  29. exit
复制代码
 楼主| 发表于 2015-7-8 15:00:59 | 显示全部楼层
回复 8# pcl_test


    我要在纯DOS下运行,这个不行吧??
发表于 2015-7-8 17:08:35 | 显示全部楼层
回复 9# 单车少男


确定是 dos?纯 dos 里好像连 set /a 都不支持,那就没法计算日期差了,除非你能找到 16 位的命令行工具
发表于 2015-7-8 17:10:00 | 显示全部楼层
看 3 楼的 prompt 绝逼不是纯 dos,楼主你先运行了 8 楼代码再说能不能用
发表于 2017-11-4 11:47:55 | 显示全部楼层
好贴0000!!!
发表于 2019-10-25 18:53:27 | 显示全部楼层
回复 8# pcl_test
代码之前有效,今天突然发现失效了,最后截止日期计算出现了错误
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 11:25 , Processed in 0.020528 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表