我有一个批处理脚本可以在不同的环境下运行不同的 PHP 版本。
@ECHO OFF
setlocal EnableExtensions EnableDelayedExpansion
IF "%ANSICON%" == "" (
php7 %*
) ELSE (
php5 %*
)
问题是它在第一个未转义的右括号上中断,因为它与IF "%ANSICON%" == "" (
.
C:\>php -r echo'()';
' was unexpected at this time.
C:\>php -r echo'(())';
)' was unexpected at this time.
根据我阅读的其他问题,该行setlocal EnableExtensions EnableDelayedExpansion
是新的,但它根本没有改变行为。
如何%*
在不先批量解释的情况下将所有内容传递给 PHP?
此批处理文件表现出相同的行为:
@ECHO OFF
setlocal EnableExtensions EnableDelayedExpansion
IF "%ANSICON%" == "" (
echo %*
) ELSE (
echo %*
)