尝试在批处理文件中设置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批处理命令的字符。
我的猜测是,当在批处理文件中运行时,批处理文件会将某些字符视为特殊字符。我试着逃避括号,但没有运气。
此命令如何在批处理文件中工作!?
答案 0 :(得分:5)
您的问题出现在变量%s和%d中。
如果它们需要由批处理文件解释(它们是环境变量),它们应该是%s%和%d%。
如果它们不是环境变量,并且需要解释(不知道什么是玻璃鱼),那么它们应该是%% d和%% s
答案 1 :(得分: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
答案 2 :(得分:0)
Windows使用插入符号(^)来转义特殊字符。尝试更换插入符号中的反斜杠。
答案 3 :(得分: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
^
&'s需要逃脱^我想。试试吧...... ;)