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