Я заметил использование ^&
в:
(robocopy c:\dirA c:\dirB *.*) ^& IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0
Мне интересно, что это делает?
Символ ^
является escape-символом * в Cmd.exe:
Добавление escape-символа перед символом команды позволяет рассматривать его как обычный текст.
При передаче или перенаправлении любого из этих символов вы должны использовать префикс с escape-символом: & \ <> ^ |
Однако это не имеет никакого эффекта и фактически не нужно в вашей команде. Похоже, вы хотите, чтобы команда IF выполнялась после завершения команды RoboCopy. Поэтому вы хотите, чтобы &
был проанализирован как команда "разделитель команд", которая говорит Cmd.exe обрабатывать ваш оператор IF как вторую команду, которая должна выполняться после запуска RoboCopy. В результате эта команда эквивалентна той, которую вы используете:
(robocopy c:\dirA c:\dirB *.*) & IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0
* Если ^
- последний символ в команде, то он интерпретируется как символ продолжения команды.