The reference page for the xp_cmdshell extended system procedure does not include the following information:
When running the xp_cmdshell extended system procedure, you can check to see whether xp_cmdshell itself was successful, as well as whether the command that xp_cmdshell invoked was successful.
To find out if xp_cmdshell was successful in spawning a command to the XP Server, enter:
@ret = exec xp_cmdshell command
where command is the name of the command you ran with xp_cmdshell.
| Value | What it means | 
|---|---|
| 0 | xp_cmdshell was successful in spawning a command. | 
| 1 | xp_cmdshell failed and did not spawn a command | 
To find out if the command you ran using xp_cmdshell was itself successful, enter:
@ret = exec xp_cmdshell command, return_status
where command is the name of the command you ran with xp_cmdshell.
| Value | What it means | 
|---|---|
| 0 | The command that xp_cmdshell invoked to run in XP Server was successful. | 
| 1 | The command that xp_cmdshell invoked to run in XP Server failed and was not successful. | 
 Both @ret = exec xp_cmdshell command and @ret = exec
xp_cmdshell command, return_status are
backward-compatible. Old stored procedures that do not
use the return_status parameter treat @ret = exec
xp_cmdshell command, return_status as
if it were @ret = exec xp_cmdshell command.
Both @ret = exec xp_cmdshell command and @ret = exec
xp_cmdshell command, return_status are
backward-compatible. Old stored procedures that do not
use the return_status parameter treat @ret = exec
xp_cmdshell command, return_status as
if it were @ret = exec xp_cmdshell command.
Also, you can still use the no_output parameter in combination with return_status, in any order.