1

当尝试在批处理文件中设置 Glassfish 配置时,有一个命令在直接从命令行运行时有效 - 但在放入 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

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

Command create-auth-realm executed successfully.

当完全按照上述方式从批处理文件运行时,它会失败并显示以下响应:

(member\ was unexpected at this time.

请注意,某些等号字符的转义是针对 Glassfish,而不是尝试转义 Windows 批处理命令的字符。

我的猜测是,当在批处理文件中运行时,批处理文件将某些字符视为特殊字符。我试过转义括号但没有运气。

此命令如何在批处理文件中工作!?

4

4 回答 4

5

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

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

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

于 2013-10-25T06:54:19.437 回答
2

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

在批处理文件中,百分号可以转义第二个百分号。

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

于 2013-10-25T07:03:10.977 回答
0

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

于 2013-10-25T00:33:31.787 回答
0
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
                                                                                                                                                                                                                                                                                                                                                                  ^

我认为 & 需要用 ^ 转义。尝试一下...;)

于 2013-10-25T00:56:25.893 回答