命令在命令行上工作,但在batch file中失败

当试图在batch file中设置Glassfishconfiguration时,有一个命令直接从命令行运行 – 但是当放入一个windowsbatch file时会失败。

命令:

call asadmin.bat create-auth-realm --classname com.sun.enterprise.security.auth.realm.ldap.LDAPRealm --property jaas-context="ldapRealm":directory="ldap\://domain.com\:389:base-dn=dc\=domain,dc\=com:group-base-dn=ou\=Groups,ou\=domain,dc\=com":search-bind-dn="CN\=username,OU\=Accounts,OU\=domain,DC\=com":search-bind-password="password":search-filter="(&(objectCategory\=user)(sAMAccountName\=%s))":group-search-filter="(&(objectCategory\=group)(member\=%d))" a-realm 

当完全按照上面的命令行运行时,它会以响应完成:

 Command create-auth-realm executed successfully. 

从上面的batch file运行时,它会失败并返回响应:

 (member\ was unexpected at this time. 

请注意,一些等号字符的转义是为了Glassfish,而不是试图为Windows批处理命令转义字符。

我的猜测是,当在batch file中运行时,batch file将某些字符视为特殊的。 我试图逃避括号,没有运气。

这个命令如何在一个batch file中工作?

你的问题在变量%s和%d中。

如果他们需要被批处理文件解释(他们是环境变量),他们应该是%s%和%d%。

如果它们不是环境变量,需要解释(不知道什么是玻璃鱼),那么它们应该是%% d和%% s

这似乎是百分号的问题。
在批处理文件中,除非找到没有匹配的百分号或未定义封闭的变量 ,否则会删除百分号。
在命令行上,它们只是保持不变。

在批处理文件中,百分号可以被百分之二十的转义。

call asadmin.bat create-auth-realm --classname com.sun.enterprise.security.auth.realm.ldap.LDAPRealm --property jaas-context="ldapRealm":directory="ldap\://domain.com\:389:base-dn=dc\=domain,dc\=com:group-base-dn=ou\=Groups,ou\=domain,dc\=com":search-bind-dn="CN\=username,OU\=Accounts,OU\=domain,DC\=com":search-bind-password="password":search-filter="(&(objectCategory\=user)( sAMAccountName\=%%s ))":group-search-filter="(&(objectCategory\=group)( member\=%%d ))" a-realm

Windows使用脱字符(^)来转义特殊字符。 尝试替换插入处的反斜杠。

 call asadmin.bat create-auth-realm --classname com.sun.enterprise.security.auth.realm.ldap.LDAPRealm --property jaas-context="ldapRealm":directory="ldap\://domain.com\:389:base-dn=dc\=domain,dc\=com:group-base-dn=ou\=Groups,ou\=domain,dc\=com":search-bind-dn="CN\=username,OU\=Accounts,OU\=domain,DC\=com":search-bind-password="password":search-filter="(&(objectCategory\=user)(sAMAccountName\=%s))":group-search-filter="(&(objectCategory\=group)(member\=%d))" a-realm ^ 

我想,我们需要逃避。 尝试一下… ;)