Advertisement
npocmaka

DayOfTheWeek.bat

Sep 7th, 2013
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 1.16 KB | None | 0 0
  1. @echo off
  2. setlocal
  3. rem :: prints the day of the week
  4. rem :: works on Vista and above
  5. rem :: by Vasil "npocmaka" Arnaudov
  6.  
  7.     rem :: getting ansi date ( days passed from 1st jan 1601 ) , timer server hour and current hour
  8.     FOR /F "skip=16 tokens=4,5 delims=:( " %%D in ('w32tm /stripchart /computer:localhost  /samples:1  /period:1 /dataonly /packetinfo') do (
  9.      set "ANSI_DATE=%%D"
  10.      set  "TIMESERVER_HOURS=%%E"
  11.      goto :end_for  )
  12.     :end_for
  13.     set  "LOCAL_HOURS=%TIME:~0,2%"
  14.     if "%TIMESERVER_HOURS:~0,1%0" EQU "00" set TIMESERVER_HOURS=%TIMESERVER_HOURS:~1,1%
  15.     if "%LOCAL_HOURS:~0,1%0" EQU "00" set LOCAL_HOURS=%LOCAL_HOURS:~1,1%
  16.     set /a OFFSET=TIMESERVER_HOURS-LOCAL_HOURS
  17.  
  18.     rem :: day of the week will be the modulus of 7 of local ansi date +1
  19.     rem :: we need need +1 because Monday will be calculated as 0
  20.     rem ::  1st jan 1601 was Monday
  21.    
  22.     rem :: if abs(offset)>12 we are in different days with the time server
  23.  
  24.     IF %OFFSET%0 GTR 120 set /a DOW=(ANSI_DATE+1)%%7+1
  25.     IF %OFFSET%0 LSS -120 set /a DOW=(ANSI_DATE-1)%%7+1
  26.     IF %OFFSET%0 LEQ 120 IF %OFFSET%0 GEQ -120 set /a DOW=ANSI_DATE%%7+1
  27.  
  28.  
  29.     echo Day of the week: %DOW%
  30.     exit /b 2147483648
  31. endlocal
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement