I coach high school guys at the varsity level, not college, FWIW.
When I have anyone who's dogging it during practice and doesn't get the hint after a couple warnings, I tell him to either go sit in the dugout or leave and I very conspicuously grab a JV player and throw him in his spot. No yelling.
One of two things happens...he either gets the message and starts playing ball, or he gets mad and checks out. Which I'm fine with. I don't want guys like that playing anyway, and by the time they hit the varsity HS level I can't waste my 2 hours of practice time trying to give him motivational therapy. 80% of my team is out for either track, golf, or soccer which are all overlapped on baseball, so I get about a week and a half tops of practices with everyone there. They either have it or they don't and I let them decide.
Another thing I've noticed is that, especially with high school guys, you can't really even get in their face like coaches used to do when we played sports. They'll just quit. There's too many easy things to do like work at HyVee or play video games in the air conditioning...they'll just say, "Hell with this, I'm out."
Had one kid this season who was a junior this year. Terrible ball player, but very nice kid. Never had an issue with him or any whininess whatsoever. First game rolled around and he was in the JV lineup because we have super low numbers, played the whole game, and then during the varsity game I look around and he's nowhere to be found. Never came back to practice so I let my AD know. I asked a few more days later and I guess when our AD talked to him in the hall he said he quit because he wasn't playing varsity. He thought because he was a junior that upper classmen automatically play varsity, and he was real mad that there were a bunch of freshman playing ahead of him. He never answered my calls...part of me thinks maybe since this kid is not an athlete and never played any other sports, that maybe he innocently assumed varsity time goes by seniority and got mad. The other part of me thinks maybe he just 1) doesn't want to put the work in to get better (to be honest it was too late for him anyway), and 2) doesn't respect the work other people put in.
All I know is it's definitely different now than it was when we were kids. Seems like the attitude is that if a kid isn't good enough he'll just quit because it's easier instead of working on his game.