Специальные символы, такие как %|^
, рассматриваются как операторы для cmd
.
Когда вы set functionNamePrefix=^^
пытаетесь повторить его, вы фактически разрешаете cmd
использовать специальный символ. Следовательно, echo %functionNamePrefix%
выдаст приглашение more
, поскольку cmd
ожидает следующую строку ввода из-за ^
.
Однако, когда вы вводите строку в двойные кавычки, вы исключаете символ в текущий cmd
пробег. Однако также рекомендуется заключать строки в двойные кавычки при использовании set
, чтобы исключить нежелательные пробелы. Например:
set var=value
Обратите внимание на случайный пробел после значения, это пространство будет составлять часть значения, пока оно существует, поэтому заключите все в двойные кавычки, чтобы не рисковать и убедитесь, что специальные символы не становятся функциями в текущем пакетном запуске.
set "functionNamePrefix=^^"
set "output=php vendor/bin/codecept run tests/acceptance/SigninCest.php:"
set "functionName=anonymousLogin"
set "functionNamePostFix=$"
set "command=%output%%functionNamePrefix%%functionName%%functionNamePostFix%"