Zauważyłem użycie ^&
w:
(robocopy c:\dirA c:\dirB *.*) ^& IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0
Zastanawiam się, co to robi?
Zauważyłem użycie ^&
w:
(robocopy c:\dirA c:\dirB *.*) ^& IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0
Zastanawiam się, co to robi?
Odpowiedzi:
^
Symbolem jest ucieczka znak * w Cmd.exe:
Dodanie znaku zmiany znaczenia przed symbolem polecenia pozwala traktować go jako zwykły tekst.
Podczas przesyłania potokowego lub przekierowywania dowolnego z tych znaków należy poprzedzić go znakiem ucieczki: & \ <> ^ |
Nie ma to jednak żadnego efektu i jest właściwie niepotrzebne w twoim poleceniu. Wygląda na to, że chcesz uruchomić polecenie IF po zakończeniu polecenia RoboCopy. Dlatego chcesz, &
aby został on przeanalizowany jako polecenie „separatora poleceń”, które mówi Cmd.exe, aby traktował instrukcję IF jako drugie polecenie, które powinno zostać wykonane po uruchomieniu RoboCopy. W rezultacie to polecenie jest równoważne z tym, którego używasz:
(robocopy c:\dirA c:\dirB *.*) & IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0
* Jeśli ^
jest ostatnim znakiem w poleceniu, to jest interpretowany jako znak kontynuacji polecenia .
^
do tego celu, musi to być ostatni znak w poleceniu.