Это записывает статус в альтернативный поток данных (технически это файл, но привязан к пакетному файлу), поэтому статус сохраняется после перезагрузки:
@echo off
REM get current status:
<"%~f0:status" set /p status=
echo Currently: %status%
if "%status%"=="D" (
defendercontrol.exe /E
echo E>"%~f0:status"
) else (
defendercontrol.exe /D
echo D>"%~f0:status"
)
Для самого первого запуска статуспусто и обрабатывается так же, как и E
(переходит в ветку else
)