Hi Not sure if anyone can help me.
How can I convert current date to week number in a batch scripting?
I only know how to generate current date from my pc. %DATE%
eg. 3/16/2017 is week 11
Alternatively, call Powershell from the batch file with a simple one-liner:
@for /f %%a in ('powershell.exe get-date -UFormat %%V') do @set WeekInYear=%%a powershell.exe file, so it takes several seconds (6.96 in my test) to get the same result that is obtained immediately via any other method! The advice may be: don't use PowerShell for simple, one-time calculations like this one...use this:
@echo off set "weekn=" for /f %%W in ( 'mshta vbscript:Execute("createobject(""scripting.filesystemobject"").GetStandardStream(1).writeline(DatePart(""ww"",Now()))"^^^&close^)' ) do @( set "weekn=%%W" ) echo %weekn% mshta is built-in tool that can open html files (and also the scripts there have access to the file system) with mshta vbscript:.. or mshta javascript:... you can inject executable code in its title. Though usually needs nasty escapes and writing to the console is not so easy (needs GetStandardStream(1) and a valid pipe) it is convenient for short expressions.now = new Date(); onejan = new Date(now.getFullYear(), 0, 1); week = Math.ceil( (((now - onejan) / 86400000) + onejan.getDay() + 1) / 7 )Pure Batch Solution. Credit to Ritchie Lawrence
@echo off & setlocal ENABLEEXTENSIONS call :DateToWeek 2017 03 16 yn cw dw echo/Today (in ISO 8601 Week Date format) is: %yn%-W%cw%-%dw% pause goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :DateToWeek %yy% %mm% %dd% yn cw dw :: :: By: Ritchie Lawrence, Updated 2002-11-20. Version 1.1 :: :: Func: Returns an ISO 8601 Week date from a calendar date. :: For NT4/2000/XP/2003. :: :: Args: %1 year component to be converted, 2 or 4 digits (by val) :: %2 month component to be converted, leading zero ok (by val) :: %3 day of month to be converted, leading zero ok (by val) :: %4 var to receive year, 4 digits (by ref) :: %5 var to receive calendar week, 2 digits, 01 to 53 (by ref) :: %6 var to receive day of week, 1 digit, 1 to 7 (by ref) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS set yy=%1&set mm=%2&set dd=%3 if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%) set /a dd=100%dd%%%100,mm=100%mm%%%100 set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,Jd=153*m+2 set /a Jd=Jd/5+dd+y*365+y/4-y/100+y/400-32045 set /a y=yy+4798,Jp=y*365+y/4-y/100+y/400-31738,t=Jp+3,Jp=t-t%%7 set /a y=yy+4799,Jt=y*365+y/4-y/100+y/400-31738,t=Jt+3,Jt=t-t%%7 set /a y=yy+4800,Jn=y*365+y/4-y/100+y/400-31738,t=Jn+3,Jn=t-t%%7 set /a Jr=%Jp%,yn=yy-1,yn+=Jd/Jt,yn+=Jd/Jn if %Jd% GEQ %Jn% (set /a Jr=%Jn%) else (if %Jd% GEQ %Jt% set /a Jr=%Jt%) set /a diff=Jd-Jr,cw=diff/7+1,wd=diff%%7,wd+=1 if %cw% LSS 10 set cw=0%cw% endlocal&set %4=%yn%&set %5=%cw%&set %6=%wd%&goto :EOF