NOTE: Starting with Windows XP, Date /t no longer returns the day. JSIToday.bat has be modified to call UnivDate.bat and DAY.bat.

1. To parse todays date in a batch and return environment variables TDDAY, TDMM, TDDD, and TDYY, call JSIToday which contains:

@echo off
setlocal
call univdate
call day %yy% %mm% %dd% daynumb daytext
set TDDAY=%daytext%
set TDYY=%yy%
set TDMM=%mm%
set TDDD=%dd%
set /a mm=10%mm%%%100
if %mm% LSS 10 set TDMM=0%mm%
set /a dd=10%dd%%%100
if %dd% LSS 10 set TDDD=0%dd%
endlocal&set TDDAY=%TDDAY%&set TDYY=%TDYY%&set TDMM=%TDMM%&set TDDD=%TDDD%
2. To parse the logged on user's password expiration date in batch and return environment variables XMM, XDD, and XYY, call JSIExpDT which contains:
 
@echo off
net user %UserName% /domain | find /i "Password expires" > "%temp%\jsiexpdt_%UserName%.log"
for /f "tokens=1,2,3,4,5* delims=/ " %%i in ('type "%temp%\jsiexpdt_%UserName%.log"') do set XMM=%%k&set XDD=%%l&set XYY=%%m
REM If your date format is DD-MM-YY, use:
REM for /f "tokens=1,2,3,4,5* delims=- " %%i in ('type "%temp%\jsiexpdt_%UserName%.log"') do set XDD=%%k&set XMM=%%l&set XYY=%%m
if /i "%XMM%" EQU "Never" goto end
if "%XYY%" GTR "97" goto Y19
set XYY=20%XYY%
goto end
:Y19
set XYY=19%XYY%
:end
You can then test if the password never expires:

if /i %XMM% EQU never goto Never