@ECHO OFF SET ERRORS=0 :: Use your own mappings and search strings here NET USE P: | FIND /I "%username%" >NUL 2>NUL IF ERRORLEVEL 1 CALL :ErrorMsg P: NET USE S: | FIND /I "system" >NUL 2>NUL IF ERRORLEVEL 1 CALL :ErrorMsg S: :: Create an e-mail message if any errors were detected IF %ERRORS% GEQ 1 CALL :Mail :: Clear variables used in this batch file FOR %%A IN (BODY DATE ERRORS LINE MESSAGE TIME) DO SET %%A= GOTO :EOF :ErrorMsg SET /A ERRORS = %ERRORS% + 1 NET USE %1 >NUL 2>NUL IF ERRORLEVEL 1 ( SET BODY=%BODY%%%0D%%0ADrive%%20%1%%20not%%20mapped GOTO :EOF ) FOR /F "TOKENS=3* DELIMS= " %%A IN ('NET USE %1 ^| FIND "Local name"') DO SET MESSAGE=Drive%%20%%A%%20mapped%%20to%%20 :: Replacement of backslashes "\" by "%%5C" :: prevents interpretation of "\n" as CR/LF FOR /F "TOKENS=3,4* DELIMS=\ " %%A IN ('NET USE %1 ^| FIND "Remote name"') DO SET MESSAGE=%MESSAGE%%%5C%%5C%%A%%5C%%B SET BODY=%BODY%%%0D%%0A%MESSAGE% GOTO :EOF :Mail FOR /F "TOKENS=2*" %%A IN ('DATE/T') DO SET DATE=%%A FOR /F %%A IN ('TIME/T') DO SET TIME=%%A START mailto:helpdesk@ourdomain.com?subject=Drive%%20mapping%%20error^&body=At%%20%DATE%,%%20%TIME%,%%20user%%20%USERNAME%%%20encountered%%20the%%20following%%20drive%%20mapping%%20error(s)%%20on%%20%COMPUTERNAME%:%%0D%%0A%BODY% GOTO :EOF