After Shiloh, Weaver and the 2nd Iowa slowly advanced to Corinth, Mississippi, where he was promoted to major. Rebel forces attacked the Union armies there in the Second Battle of Corinth, where Weaver's courage in that Union victory convinced his superiors to promote him to colonel after the regiment's commanding officer was killed. After Corinth, Weaver's unit took up garrison duty in northern Mississippi. In the summer of 1863, they were redeployed to the Tennessee–Alabama border, again on occupation duty around Pulaski, Tennessee. They rejoined the action at the Battle of Resaca, a part of the Atlanta Campaign, then continued with Major General William Tecumseh Sherman's march through Georgia to the sea in 1864. Weaver's enlistment ended in May 1864, and he returned to his family in Iowa. After the war ended, Weaver received a promotion to brevet brigadier general, backdated to March 13, 1865.