This task has been clarified. Its programming examples are in need of review to ensure that they still fit the requirements of the task.


Task

Display the   current date   in the formats of:

   2007-11-23     and 
   Friday, November 23, 2007


 
@echo off
setlocal enabledelayedexpansion

:: Define arrays of days/months we'll need
set daynames=Monday Tuesday Wednesday Thursday Friday Saturday Sunday
set monthnames=January February March April May June July August September October November December

:: Separate the output of the 'date /t' command (outputs in the format of "Sun 16/04/2017") into 4 variables
for /f "tokens=1,2,3,4 delims=/ " %%i in ('date /t') do (
  set dayname=%%i
  set day=%%j
  set month=%%k
  set year=%%l
)

:: Crosscheck the first 3 letters of every word in %daynames% to the 3 letter day name found previously
for %%i in (%daynames%) do (
  set tempdayname=%%i
  set comparedayname=!tempdayname:~0,3!
  if "%dayname%"=="!comparedayname!" set fulldayname=%%i
)

:: Variables starting with "0" during the 'set /a' command are treated as octal numbers. To avoid this, if the first character of %month% is "0", it is removed
if "%month:~0,1%"=="0" set monthtemp=%month:~1,1%
set monthcount=0

:: Iterates through %monthnames% and when it reaches the amount of iterations dictated by %month%, sets %monthname% as the current month being iterated through
for %%i in (%monthnames%) do (
  set /a monthcount+=1
  if %monthtemp%==!monthcount! set monthname=%%i
)
 
echo %year%-%month%-%day%
echo %fulldayname%, %monthname% %day%, %year%
pause>nul
 