15

I've noticed the usage of ^& in:

(robocopy c:\dirA c:\dirB *.*) ^& IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0

I am wondering what does it do?

I say Reinstate Monica
  • 25,487
  • 19
  • 95
  • 131
Daniel
  • 261
  • 1
  • 2
  • 7
  • 1
    Also see [Is typing %^ into cmd.exe a Windows easter egg?](https://superuser.com/questions/917268/is-typing-into-cmd-exe-a-windows-easter-egg) – undo Jan 08 '19 at 09:10

1 Answers1

21

The ^ symbol is the escape character* in Cmd.exe:

Adding the escape character before a command symbol allows it to be treated as ordinary text.
When piping or redirecting any of these characters you should prefix with the escape character: & \ < > ^ |

Source

However, it has no effect and is actually unnecessary in your command. It appears you want the IF command to be run after the RoboCopy command completes. Therefore you want the & to be parsed as the "command separator" command, which tells Cmd.exe to treat your IF statement as a second command that should be executed after running RoboCopy. As a result, this command is equivalent to the one you're using:

(robocopy c:\dirA c:\dirB *.*) & IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0 

*If ^ is the last character in a command, then it is interpreted as the command continuation character.

More Information:

I say Reinstate Monica
  • 25,487
  • 19
  • 95
  • 131