home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / podstawy / dos / 4dos / 4uzytki / 4datef.exe / WEEK.BTM < prev   
Text File  |  1992-10-05  |  1KB  |  57 lines

  1. @echo off^goto Week_start
  2. :WEEK_help
  3. text
  4.  
  5.  WEEK - The number of the week. Returns the week number for a given date
  6.  
  7.  Command line usage:    WEEK [/?] [<date>]
  8.  Batch file usage:      WEEK [/?] [<date_variable>]
  9.         
  10.  If WEEK is called from a batch file with a variable name, day of week
  11.  is returned in the variable, otherwise shown on screen, using echos.
  12.  
  13.  <Date> defaults to the current system date. Format depends on country
  14.  settings. Only dates in between years 1980 and 2079 are valid.
  15.  
  16.  Switches:              /? - Display this help screen
  17.  
  18. endtext
  19. return
  20.  
  21. :WEEK_start
  22. if %_batch eq 1 setlocal
  23. if "%debug" eq "%@name[%0]" echo on
  24.  
  25. iff "%@substr[%1,0,1]" eq "/" then
  26.  if "%1" eq "/?" (gosub WEEK_help^quit)
  27.  if %_batch eq 1 echo DOW: Invalid switch: %1
  28.  quit 2
  29. endiff
  30.  
  31. iff "%1" eq "" then
  32.  set Dt=%_date
  33. elseiff %_batch eq 1 then
  34.   set Dt=%1
  35. else
  36.   set Dt=%[%1]
  37. endiff
  38.  
  39. set Yr=%@substr[%Dt,6,2]
  40. set Dt=%@date[%Dt]
  41. set Wk=%@int[%@eval[(%Dt-(%Dt+1)%%7-%@date[01.01.%Yr])/7+1.5]]
  42. iff %Wk eq 53 then
  43.  REM Check if it is not the 1st week of the next Year:
  44.  if %@eval[(%@date[31.12.%Yr]+1)%%7] lt 3 set Wk=1
  45. elseiff %Wk eq 0 then
  46.  REM The Week belongs to the last Year:
  47.  set Wk=31.12.%@eval[%Yr-1]
  48.  call %0 Wk
  49. endiff
  50.  
  51. iff %_batch gt 1 .and. "%1" ne "" then
  52.  set %1=%Wk
  53. else
  54.  echos %Wk
  55. endiff
  56. unset Yr Dt Wk >& nul
  57.