2013-10-24 4 views
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, не попытка экранирования символов для команды пакетного окна.

Я предполагаю, что при запуске в пакетном файле командный файл обрабатывает некоторые символы как специальные. Я попытался избежать скобок без везения.

Как эта команда может работать в пакетном файле !?

ответ

5

Ваша проблема заключается в переменных% s и% d.

Если им необходимо интерпретировать командный файл (они являются переменными среды), они должны быть% s% и% d%.

если они не являются переменными среды, и должны быть интерпретированы (не знаю, что GlassFish есть), то они должны быть %% d и %% s

+0

Этот ответ на 99% правильный. В этом есть небольшой шарик кривой, хотя я должен был фактически избежать символа% дважды. например %%%% d и %%%% s. Не знаю, почему. –

+0

Это предположение (как я уже сказал, я не знаю, что такое стеклянная рыба), но, вероятно, как только ваша команда будет интерпретирована в вашем пакетном файле, а% передается asadmin.bat или в стеклянную рыбку, ее нельзя интерпретировать снова. –

0

Windows использование карманов (^), чтобы избежать специальных символов. Попробуйте заменить обратную косую черту у карманов.

+0

не работает;) – Endoro

+0

Тысяча извинений. :( – BN0LD

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 экранировать с^я думаю. попробуйте ... ;)

+0

неправильный ответ;););) – Endoro

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

Смежные вопросы