Have you looked at the Add Surface Information (3D Analyst) tool?
[INDENT]"Slope for a line is calculated as a percent, or grade, by examining each of its segments. The min and max slope values are taken from the segment that is either closest to horizontal or most extreme. The average slope is determined by averaging the slope for all segments weighted by their 3D length. Longer segments will have more influence than shorter segments."[/INDENT]