0

我正在尝试在 Windows 2008 R2 上运行批处理文件,如下所示:Setup.bat 8​​0,http,"Database=LbCore;Server=(localhost);Trusted_connection=yes","TestProduct","localhost"

我正在打印批处理文件中的参数,如下所示:

ECHO *** Port=%~1,
ECHO *** Protocol=%~2,
ECHO *** Connection String=%~3, 
ECHO *** Service Name=%~4, 
ECHO *** Host Name=%~5

我期望输出为:

*** Port=80, 
*** Protocol=http, 
*** Connection String=Database=LbCore;Server=(localhost);Trusted_connection=yes, 
*** Service Name=TestProduct, 
*** Host Name=localhost

这在我的机器上运行良好。但令人惊讶的是,当我尝试在其他一些 Window 2008 R2 机器上运行它时,它正在打印:

*** Port=80, 
*** Protocol=http, 
*** Connection String=Database, 
*** Service Name=LbCore, 
*** Host Name=Server

似乎在其他机器上, = 和 ; 被视为参数分隔符。

有没有更好的方法来传递带有特殊字符的参数,如上述场景?

4

1 回答 1

0

将带有特殊字符的术语双引号,或将它们全部双引号。

call batch "80" "http" "Database=LbCore;Server=(localhost);Trusted_connection=yes" "etc"

编辑:我注意到您似乎正在这样做,但如果它在另一台机器上不起作用,请检查该机器上的批处理文件和启动器。

于 2013-04-29T10:30:02.583 回答