批处理脚本 - 为 Codeception 命令的输出添加特殊字符

Batch scripting - add special character to output for Codeception command

我正在编写一个 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%

$ 符号显示正确,但 ^ 符号显示不正确。

有什么建议吗? 谢谢

用引号括起变量:

set "functionNamePrefix=^^"

现在变量 %functionNamePrefix% 将包含 ^

%|^ 等特殊字符被视为 cmd.

的运算符

当您 set functionNamePrefix=^^ 并尝试回显它时,您实际上允许 cmd 使用特殊字符。因此,echo %functionNamePrefix% 将给出 more 提示,因为 cmd 期待下一个输入行,因为 ^.

然而,当您双引号字符串时,您将排除当前 cmd 运行 中的字符。但是,还建议在使用 set 时对字符串进行双引号,以确保消除不需要的白色 space。例如:

set var=value

注意值后的意外 space,这个 space 只要存在就会构成值的一部分,所以将所有内容用双引号括起来以确保安全并确保特殊字符是未成为当前批次中的函数 运行.

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