Option Explicit Dim intWeek, wshShell, wshUserEnv ' Check command line argument(s) If WScript.Arguments.Named.Count > 0 Then Syntax With WScript.Arguments.Unnamed If .Count = 1 Then ' Check if valid date is specified on the command line If IsDate( .Item(0) ) Then intWeek = DatePart( "ww", .Item(0), vbMonday, vbFirstFourDays ) Else Syntax End If ElseIf .Count = 0 Then ' Calculate today's week number if no date was specified intWeek = DatePart( "ww", Date, vbMonday, vbFirstFourDays ) Else Syntax End If End With ' Set the result in an environment variable "Week" Set wshShell = CreateObject( "WScript.Shell" ) Set wshUserEnv = wshShell.Environment( "USER" ) wshUserEnv( "Week" ) = intWeek Set wshUserEnv = Nothing Set wshShell = Nothing ' Display the result WScript.Echo intWeek ' Exit with the resulting week number as return code WScript.Quit intWeek Sub Syntax WScript.Echo "Week.vbs, Version 2.00 for Windows Script Host 2.00" _ & vbCrLf _ & "Return the ISO week number for the current or specified date." _ & vbCrLf & vbCrLf _ & "Usage: CSCRIPT.EXE //NoLogo WEEK.VBS [ date ]" _ & vbCrLf & vbCrLf _ & "Where: ""date"" is an optional date to calculate the week number for" _ & vbCrLf _ & " (default is today)" _ & vbCrLf & vbCrLf _ & "Notes: The ISO week number will be displayed on screen, returned as return" _ & vbCrLf _ & " code, and stored in an environment variable %Week%." _ & vbCrLf _ & " 0 means the last week (52 or 53) of the previous year." _ & vbCrLf _ & " If ambiguous, the date is interpretated according to the computer's" _ & vbCrLf _ & " regional/international settings." _ & vbCrLf _ & " To make the date unambiguous, use the ISO format (yyyy-mm-dd)." _ & vbCrLf _ & " To distinguish between errors and week numbers, -1 is used for errors." _ & vbCrLf & vbCrLf _ & "Written by Rob van der Woude" _ & vbCrLf _ & "http://www.robvanderwoude.com" WScript.Quit -1 End Sub