Родился 20 августа 1918 года в селе Таволжанка (ныне часть города Грязи в Липецкой области). Иван первым в семье стал грамотным и после окончания школы работал секретарем сельсовета. В 1938 году он был призван в армию. Окончил курсы младших лейтенантов.
С мая 1944 года Иван Васильевич командовал взводом 490-го стрелкового полка 192-ой стрелковой дивизии, 39-ой армии, 3-го Белорусского фронта.
В середине октября 1944 года 192-я стрелковая дивизия вышла к реке Шепуше в районе литовского города Кудиркос-Науместис. 490-му полку было приказано первому форсировать реку и вступить на вражескую территорию.
16 октября 1944 года лейтенант Шкатов с группой бойцов захватил небольшой плацдарм на вражеском берегу этой реки. Противник, стремясь сбросить смелых бойцов в реку, контратаковал превосходящими силами. Лейтенант Шкатов в этом бою не отошел ни на шаг. Он трижды был ранен, но его взвод одержал победу. Когда подошло подкрепление раненый командир был еще в сознании, но по дороге в медсанбат скончался от потери крови.
За умелое и энергичное командование подразделением при форсировании реки Шепуше, мужество и отвагу, проявленные при защите завоеванного на вражеском берегу плацдарма, Указом Президиума Верховного Совета СССР от 24 марта 1945 года лейтенанту Шкатову Ивану Васильевичу посмертно присвоено звание Героя Советского Союза.
В Липецке в честь Шкатова Ивана Васильевича установлены стела и мемориальная доска.
В городе Грязи на доме, где родился и жил Иван Шкатов, установлена мемориальная доска. Школа № 10 города Грязи, где учился герой, носит его имя. На здании школы установлена мемориальная доска. Также в городе Грязи установлена памятная доска с именем Ивана Васильевича Шкатова на Аллее Героев.