The drive will automatically remap data in bad sectors to spare sectors if it's able to read the data successfully. If it can't read the data then it won't remap a bad sector until it's been overwritten with new information.
Bad sectors are a physical problem with the media. There is no way to get rid of them. Even the hard drive will fail because the bad sectors spread. When a sector goes bad, the data get lost and could not be recovered in any way. But data on other sectors remain intact and could be recovered if it was lost. You can perform the recovery of bad sectors by creating disk image with Stellar windows data recovery software.
I'm not an expert in this (but am working on getting expertise)
but (again haven't used this extensively or at all but have been reading on it and used it minimally wnat ot use these CLI commands more though)
This utility tries to locate bad blocks by writing patterns to every sector and then reading them back again to verify them. But the firmware in the disk itself also verifies data by checking it's ECC information, and if it finds problems it will remap the sector at the drive level without the utility being aware of it. As a result it's unusual for software to be aware of bad blocks on the drive - the drive normally looks "clean" and the only way to see if blocks have gone bad is to look at the drive's SMART data. See: http://en.wikipedia.org/wiki/Badblocks
This utility checks the consistency of the file system metadata. It doesn't look for bad blocks per se, but rather looks for inconsistencies such as a block that's marked as being free for use yet also happens to show up in the list of blocks allocated to a file.
For the other people reading, these are Linux utilities, you won't find them in Windows. The equivalent to "fsck" in Windows is "chkdsk".