Here is a batch code to reboot to safe mode:
Echo Off
REM Check Windows Version
ver | findstr /i "5.0." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "5.1." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "5.2." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "6.0." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "6.1." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
goto warn_and_exit
:ver_nt5x
:Run Windows 2000/XP specific commands here
::Runs safe mode with networking
bootcfg /raw /a /safeboot:network /id 1
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*UndoSB" /t REG_SZ /d "bootcfg /raw /fastdetect /id 1"
SHUTDOWN -r -f -t 07
goto end
:ver_nt6x
:Run Windows Vista/7 specific commands here
::Runs safe mode with networking
bcdedit /set {current} safeboot network
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*UndoSB" /t REG_SZ /d "bcdedit /deletevalue {current} minimal"
SHUTDOWN -r -f -t 07
goto end
Echo On
:warn_and_exit
echo This OS cannot be determined now.