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

[日期时间] 批处理从 makecab 输出中获取时间和日期

[复制链接]
发表于 2013-11-16 04:18:12 | 显示全部楼层 |阅读模式
  1. @echo off

  2. echo, & echo ------------ 输出默认格式
  3. call :Now

  4. echo, & echo ------------ 输出自定义格式
  5. call :Now YYYY年-MM月-DD日 HH时:MI分:SS秒 星期Week

  6. echo, & echo ------------ 设置到变量
  7. call :Now (set)
  8. set now

  9. pause
  10. exit /b

  11. ::=============================================================
  12. :: 函数: Now --- 获取当前时间和日期
  13. ::
  14. :: 原理:
  15. ::         从 makecab 输出文件中的第一行读取时间日期。第一行格式为:
  16. ::                MakeCAB Report: Sat Nov 16 02:36:02 2013
  17. :: 参数:
  18. ::         默认值为 YYYY-MM-DD HH:MI:SS Week
  19. ::
  20. ::         如果参数为 "(set)",则时间日期会被设置到以下变量中:
  21. ::                now.yyyy now.mm now.dd now.hh now.mi now.ss now.week

  22. :Now [Output=YYYY-MM-DD HH:MI:SS Week]
  23. makecab /d RptFileName="%temp%\.rpt" /d InfFileName=nul /f nul >nul

  24. for /f "usebackq tokens=3-9 delims=: " %%1 in ("%temp%\.rpt") do (
  25.         setlocal enabledelayedexpansion
  26.         
  27.         set WeekList=Mon_1 Tue_2 Wed_3 Thu_4 Fri_5 Sat_6 Sun_7
  28.         set /a Week = !WeekList:*%%1_=! 2>nul
  29.         
  30.         set MonthList=Jan_1 Feb_2 Mar_3 Apr_4 May_5 Jun_6 Jul_7 Aug_8 Sep_9 Oct_10 Nov_11 Dec_12
  31.         set /a MM = !MonthList:*%%2_=! 2>nul
  32.         
  33.         if "%~1" == "" (
  34.                 echo %%7-!MM!-%%3 %%4:%%5:%%6 !Week!
  35.         ) else if /i "%~1" == "(set)" (
  36.                 for /f "tokens=1-7" %%a in ("%%7 !MM! %%3 %%4 %%5 %%6 !Week!") do (
  37.                         endlocal

  38.                         set now.yyyy=%%a
  39.                         set now.mm=%%b
  40.                         set now.dd=%%c
  41.                         set now.hh=%%d
  42.                         set now.mi=%%e
  43.                         set now.ss=%%f
  44.                         set now.week=%%g

  45.                         goto :eof
  46.                 )
  47.         ) else (
  48.                 set "Output=%*"

  49.                 set Output=!Output:YYYY=%%7!
  50.                 for %%m in (!MM!) do set Output=!Output:MM=%%m!
  51.                 for %%w in (!Week!) do set Output=!Output:Week=%%w!
  52.                 set Output=!Output:DD=%%3!
  53.                 set Output=!Output:HH=%%4!
  54.                 set Output=!Output:MI=%%5!
  55.                 set Output=!Output:SS=%%6!
  56.         
  57.                 echo,!Output!
  58.         )

  59.         endlocal
  60.         goto :eof
  61. )
  62. ::=============================================================
复制代码
从以下链接看到的方法:
http://with-love-from-siberia.blogspot.com/2009/11/cross-platform-datetime-definition.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 00:10 , Processed in 0.016223 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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