As long as the main battery has a usable charge and is in the laptop, the cmos battery is out of the circuit and does not discharge. In other words the clock is powered by the main battery as long as it has a charge.
I've never had a system that kept perfect time while running Windows.
In XP or Vista run regedit.
Set "SpecialPollInterval" to 5460 (21600 seconds in decimal)
This is will tell the Windows Time service to check an internet time server every 6 hours instead of the default once a week.