Depends how thorough you want to be about it, but I'd echo Evan's recommendation of md5deep/hashdeep - I use this to verify the integrity of my offsite backup server. You can turn one dir tree into a list of MD5 checksums, and then compare those checksums to another dir tree like so (windows-ified version of the commands I use under linux):
Code:
hashdeep -rlc md5 c:\tree1 > c:\tree1_md5sums.txt
hashdeep -ravvl -k c:\tree1_md5sums.txt c:\tree2
Assuming there are no differences between the dir trees you should get output like this:
Code:
hashdeep: Audit passed
Files matched: 3975194
Files partially matched: 0
Files moved: 0
New files found: 0
Known files not found: 0
Bear in mind this requires reading every last byte of each tree and computing the MD5 hash so it's quite IO and CPU intensive.
hashdeep and friends are something of a hammer to crack a nut though. If you're just worried about whether files copied from A to B via explorer or robocopy correctly then it's probably well beyond your requirements.
If you don't need a full cryptographic hash and are content just to use date/time detection to show differences (and assuming both trees are accessible from the same computer) you can just use robocopy's /L param to list files it would copy from one dir tree to another.
Been wishing for years that robocopy would add a checksum like is available in rsync (IIRC rsync also uses MD5 now).