Пакетный сценарий - добавление специального символа в вывод для команды Codeception - PullRequest
0 голосов
/ 03 августа 2020

Я пишу файл bat, чтобы автоматизировать процесс следующей команды Codeception.

php vendor/bin/codecept run tests/acceptance/SigninCest.php:^anonymousLogin$

Проблема в том, что я не могу вывести символ ^, например:

set functionNamePrefix=^^
set output=php vendor/bin/codecept run tests/acceptance/SigninCest.php:
set functionName=anonymousLogin
set functionNamePostFix=$
set command=%output%%functionNamePrefix%%functionName%%functionNamePostFix%

символ $ отображается правильно, а ^ нет.

Есть какой-нибудь совет? Спасибо

Ответы [ 2 ]

1 голос
/ 03 августа 2020

Специальные символы, такие как %|^, рассматриваются как операторы для 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%"
1 голос
/ 03 августа 2020

Заключите переменную в кавычки:

set "functionNamePrefix=^^"

Теперь переменная %functionNamePrefix% будет содержать ^.

...