13

Я заметил использование ^& в:

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

Мне интересно, что это делает?

1 ответ1

18

Символ ^ является escape-символом * в Cmd.exe:

Добавление escape-символа перед символом команды позволяет рассматривать его как обычный текст.
При передаче или перенаправлении любого из этих символов вы должны использовать префикс с escape-символом: & \ <> ^ |

Источник

Однако это не имеет никакого эффекта и фактически не нужно в вашей команде. Похоже, вы хотите, чтобы команда IF выполнялась после завершения команды RoboCopy. Поэтому вы хотите, чтобы & был проанализирован как команда "разделитель команд", которая говорит Cmd.exe обрабатывать ваш оператор IF как вторую команду, которая должна выполняться после запуска RoboCopy. В результате эта команда эквивалентна той, которую вы используете:

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

* Если ^ - последний символ в команде, то он интерпретируется как символ продолжения команды.

Дополнительная информация:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .