Из дворян Рязанской губернии. В службу вступил 24 февраля 1776 года солдатом в лейб-гвардии Измайловский полк. 23 января 1781 года был выпущен из гвардии поручиком во Владимирский пехотный полк.
В 1783 году переведён с производством в капитанский чин в Ладожский пехотный полк. Участвовал в стычках с горцами на Кавказе, сражался с турками в 1787—1791 годах, где с отличием действовал при штурме Измаила.
В 1792 и 1794 годах воевал в Польше.
В 1794—1796 годах генерал-квартирмейстер в армии графа П. А. Румянцева. Составил подробную карту Волынской и Подольской губерний и 30 декабря 1797 года пожалован в полковники.
Чин генерал-майора он получил 18 мая 1799 года вместе с переводом в Ямбургский кирасирский полк. В 1799 году был зачислен в Генеральный штаб (с 1796 года стал называться Свитой Его Императорского Величества по квартирмейстерской части).
В 1800 году был переведен в Петербургское депо по управлению квартирмейстерской частью, занимал должность кастеляна запасного петергофского дворца. Провел несколько картографических съемок (в том числе берегов Финского залива близ Стрельны). В 1800 году в звании генерал-квартирмейстера возглавлял службу Генерального штаба русской армии. С 1801 года управляющий Петербургским депо.
26 ноября 1803 года награждён орденом Св. Георгия 4-й степени № 1502
В 1807 году командовал бригадой, сражаясь с французами в Пруссии. Назначен шефом Могилёвского мушкетерского полка 12 декабря 1807 года (шефом был до 24 апреля 1808 года, когда был назначен Свеаборгским комендантом).
Дрался со шведами в Финляндии. 15 апреля 1808 года у Револакса его сводный отряд из 1500 человек был атакован превосходящими силами шведов, и при попытке прорвать кольцо окружения Булатов получил три огнестрельных ранения (одна из пуль прошла рядом с сердцем) и попал в плен, был отправлен в Стокгольм, перенес там тяжелейшую операцию.
Возвратившись в 1809 году, был оправдан военным судом и направлен в Молдавию, где воевал с турками под Бабадагом, Силистрией, Шумлой, Рущуком, а за Батинское сражение получил 21 ноября 1810 года орден Св. Георгия 3-й степени
В 1812 году командовал корпусом в Дунайской армии. В июле 1812 года догнал армию у Луцка. В сентябре нанес поражение польско-саксонскому отряду, отбросив его к Кобрину и Брест-Литовску. Командуя своими частями участвовал в сражениях при Горностаеве, Волковыске, Пинске. В 1813 году был при осаде Ченстохова и в сражении под Дрезденом. Закончил свой боевой путь у стен Гамбурга. Участвуя в блокаде этого города, получил два тяжелых ранения.
В 1815—1816 годах командовал войсками между Днестром, Прутом и Дунаем. С 1820 года главнокомандующий войсками в Бессарабии. В генерал-лейтенанты произведён 26 ноября 1823 года и назначен командовать 27-й пехотной дивизией, прославившей себя в 1812 году.
Последняя должность, которую он занял в 1824 году — губернатор Омской губернии.
Жена: Нилус, Мария Богдановна.
Дети: