Я помітив використання ^&
в:
(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:
Додавання символу втечі перед символом команди дозволяє йому трактуватися як звичайний текст.
Під час конфігурування або перенаправлення будь-якого з цих символів слід встановити префікс із символом втечі: & \ <> ^ |
Однак це не має ефекту і фактично непотрібне у вашій команді. Здається, ви хочете, щоб команда IF запускалася після завершення команди RoboCopy. Тому ви хочете, &
щоб команда розбиралася як команда "роздільник команд", яка вказує Cmd.exe трактувати ваш оператор IF як другу команду, яка повинна бути виконана після запуску RoboCopy. Як результат, ця команда еквівалентна тій, яку ви використовуєте:
(robocopy c:\dirA c:\dirB *.*) & IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0
* Якщо ^
останній символ у команді, він інтерпретується як символ продовження команди .
^
для цієї мети, він повинен бути останнім символом команди.