Board logo

标题: [日期时间] 批处理从 makecab 输出中获取时间和日期 [打印本页]

作者: tmplinshi    时间: 2013-11-16 04:18     标题: 批处理从 makecab 输出中获取时间和日期

  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




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