Adding this answer per request. Based on Asaf’s solution, and adding skrebbel’s comment.
You can simplify the check to:
robocopy <opt> <src> <tgt>
if %errorlevel% leq 1 exit 0 else exit %errorlevel%
As kindly remarked in the comments, you may want to adjust the ‘1’: It depends on what your operation should treat as an error. Have a look at the meaning of the bits that in combination make up the number returned by robocopy:
0×10 Serious error. Robocopy did not copy any files. This is either a
usage error or an error due to insufficient access privileges on the
source or destination directories.0×08 Some files or directories could not be copied (copy errors
occurred and the retry limit was exceeded). Check these errors
further.0×04 Some Mismatched files or directories were detected. Examine the
output log. Housekeeping is probably necessary.0×02 Some Extra files or directories were detected. Examine the output
log. Some housekeeping may be needed.0×01 One or more files were copied successfully (that is, new files
have arrived).0×00 No errors occurred, and no copying was done. The source and
destination directory trees are completely synchronized.