Я вижу, что каре является зарегистрированным символом ESC.
Но, у меня есть пример, показывающий это для символа двойной кавычки, ^
не работает и необходимо использовать \
C:\>runas /user:Administrator "cmd /k dir \"%userprofile%\""
Почему то, что, и где это документируется?
Один из примеров в RUNAS /?
шоу тот синтаксис. Каре является символом ESC для CMD.EXE
но в человеке Windows программы являются бесплатными реализовать свои собственные символы ESC и globbing.
\
знак заставляет интерпретатор интерпретировать следующий знак как символ вместо идентификатора.
Вы видите его много в коде также:
"Hello \"World\""
это интерпретируется как
Hello "World"
в Вашем примере, для передачи аргументов cmd
, это должно быть включено в "". Но начиная с аргументов cmd
содержит "(и это закончило бы корпус), они добавляются \
. Если "" не был бы там, /k dir \"%userprofile%\"
был бы интерпретирован как аргументы runas
, не к cmd
.
Причина, почему они включают %userprofile %, состоит в том, потому что это - переменная окружения и будет заменено текстом, который мог содержать пробелы, которые (по той же причине как выше) приведут аргумент cmd
неправильный.