Welcome to TSG!
How do you want to do the compare?
File name, size, attributes (R-H-S-A-C), date modified, date accessed, or a byte by byte comparison? (Sounds like the latter).
Is this one document folder (and subfolders) shared by all users of the PC?
...example, copying C:\Docs to J:\Docs
Or is there a document folder in each User's profile?
...If multiple folders, the backup path should include the Username.
Is the same USB stick used on different PCs?
...If so, the backup path should include the PC name.
If files are missing or don't compare, do you need the file name emailed, or just logged with the email noting the error?
The above info would be needed as a start. Would probably be useful if you can post your script. Just be sure to modify any info you don't want public, like User/PC names and email info that Blat uses.
Something else to consider:
Do you need to keep multiple versions of files?
...Backup all files to a dated folder, deleting old folders as needed, or
...Take a base backup once every XX days, and copy only changed files to different, dated folders.
Some options and methods
You can add the /V switch to Xcopy that will verify that the copy was successful. This only verifies that the destination file can be read without error, it doesn't do a byte by byte comparison.
You can run Xcopy in List Only mode twice, once from Source to Destination, once Destination to Source. If both directions return zero files then the dates and names are the same, and there are no missing files.
This won't check size or file attributes, or that the contents of the files are the same.
You can run the fc.exe program to do a byte by byte comparison. If no files are missing fairly easy to do, but time consuming. You could limit it to only run fc.exe on files modified since the last backup, or in the last XX days.
Robocopy (comes with Vista, available for XP) is much more flexible, and can show if the file sizes, time stamps or attributes are different, and if the file exists only in the Source or only in the Destination, all in one pass. It only flags files sizes as different if the time stamps are the same though. This would only be an issue if the same USB stick is used on multiple PCs and you don't use different folders for each PC, or someone is deliberately messing with things.
Does your batch file run from the USB stick? If so, and the USB stick is shared, you can put the XP version of Robocopy on it, and just have it check the OS; If it's XP, use Robocopy from the USB stick, no need to install it on every XP system. (Installing is just a matter of copying the file to the Windows\system32 folder though so not too big a deal)
Does your script delete files from the backup that no longer exist in the source? (Not a good idea to run automatically!)
Files accidentally deleted should generate an email, but if you deliberately delete a file from the source, that would also generate an email unless you also delete or archive the file from the destination.
You could include a routine that will delete (or archive) files in the destination that no longer exist in the source if they are more than XX days old. During the XX day grace period, they would still generate an email each time the backup runs.
What I would do is have files in the destination that are missing from the source be archived automatically, and send an email. That way the email will only be sent once, and the file will still be available in the archive folder if the deletion was by mistake. If it was deliberate, the email can be ignored.
You can then run an archive clean up script (or make it part of the backup script) to delete files in the archive folder that are more than XX days old.
Jerry