As someone who has been a lifelong fan of both Batman and Superman, I will have to say that it's Batman who wins.
The answers here which say that Superman would win, bring up his superpowers, and all his abilities. It actually reminds me of what Dr. Manhattan's tells Ozymandias in Watchmen:
"But you, Adrian...are just a man. And the world's smartest man poses no greater threat to me than does its smartest termite."
Except perhaps X-ray vision, Superman could use any one of his powers to annihilate Batman completely. Batman could prepare for any eventuality, but what will he do when Superman decides to incinerate him from space? Or at ten times the speed of sound? Of course, the caveat here is that this reasoning works for a duel between the best humanity has to offer and the gold standard of a kryptonian. Who would win in a fight between a kryptonian and a human if the battle takes place on earth? The kryptonian. The odds of Deathstroke defeating Zod in an one-on-one is practically zero. But that's not the question. Not really.
The greatest skill that Batman possesses is his ability to know his limits, and those of his opponents, and using it with absolute precision. Every single confrontation between the two would have us witnessing Batman using this particular talent to the fullest and emerging victorious. Because that's what Batman does, only the mission matters and nothing else. The ends always justifies the means, and even if he does have a set list of strict moral codes, he's always willing to bend or break many (not all) of the accepted rules to get his way despite the cost to himself and others. Batman wins in a fight against Superman because he exploits Superman's greatest weakness on all occasions. Sure, kryptonite makes him weak, prolonged exposure to red sunlight makes him lose his powers, a telepathic puppeteer would have a field day with him, and any magician worth his wand would cause considerable damage. But all of these weaknesses are mere annoyances when compared to what really makes Superman vulnerable - his humanity.
As quoted from Batman: Hush (and I posted this as a comment to one of the answers here),
If Clark wanted, he could use his superspeed and squish me into the cement. But I know how he thinks. Even more than the Kryptonite, he's got one big weakness. Deep down, Clark's essentially a good person... and deep down, I'm not.
Batman doesn't win because he's the better strategist, not because he can anticipate every single move Superman makes, and definitely not because he's better at hand-to-hand combat. It's because Superman lets him. The ultimate duel between the two, in my opinion, was in The Dark Knight Returns, where it could be declared that Batman won, and in the events leading up to the scuffle, Superman begs him not to put up a fight. Even during the fight, Superman holds back as much as he can, making sure that none of his blows cause any mortal damage, while Batman has nothing holding him back. He knows how much Superman can take, and he knows what it would take for Superman to be killed, and Batman is so arrogant that he's willing to flirt with that line, a lot more than Superman would ever dare. In the roundabout way Superman tries to subdue Batman without resorting to lethal force, he gives a lot of room for Batman to whip out his kryptonite or whatever he has planned.
For anyone who has difficulty with the idea that Batman would defeat Superman in a fight, all I have to say that the fight between the two greatest superheroes of all time isnever Batman doesn't win because he's the better hero, he wins because he isn't a physical confrontation.