2016-08-20 2 views
0

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

У меня есть пакетный файл, который необходимо развернуть одно конкретное приложение из всех моих перечисленных доменов Glassfish. Вот код:

@echo off 
setlocal EnableDelayedExpansion 
set glassfishDomains=domainA4841,domainB4842 

for /d %%a in (%glassfishDomains%) do (
    set fullDomain=%%a 
    set port=!fullDomain:~-4! 
    set domain=!fullDomain:~0,-4! 
    echo Undeploying appName on domain !domain! !port! 
    asadmin --host localhost --port !port! undeploy appName 
    echo. 
) 

Проблема заключается в том, что она «теряет состояние» после того, как команды asadmin выполняется в первый раз.

asadmin --host localhost --port !port! undeploy app 

Для удобства использования asadmin.bat является инструментом командной строки Glassfish.

Если я удалю эту строку/команду из файла, цикл отлично выполняет извлечение строки, используя задержку расширения. Это результирующий результат в этом случае:

Undeploying app on domain domainA 4841 

Undeploying app on domain domainB 4842 

«Потерянное состояние» Я имею в виду, что переменные больше не получают правильных значений. После первого выполнения команды asadmin, я начинаю этот результат:

Undeploying appName on domain domainA 4841 
Command undeploy executed successfully. 

D:\>(
set fullDomain=domainB4842 
set port=!fullDomain:~-4! 
set domain=!fullDomain:~0,-4! 
echo Undeploying appName on domain !domain! !port! 
asadmin --host localhost --port !port! undeploy appName 
echo. 
) 
domainB4842 
Undeploying appName on domain !domain! !port! 
CLI136: Port !port! should be a numeric value. 
Command --host failed. 

Таким образом, вопрос, есть ли способ избежать «потери состояния сценария» после того, как эти команды выполняют? Или это какое-то ограничение от этого инструмента (asadmin)?

+0

@Mofi Я просто отредактировал мой вопрос уточнить вещи, которые вы задаете о. Использование call asadmin работает. Благодарю. – carlossierra

+0

@Mofi обе работали: 'call asadmin ...' и предложение, сделанное smead. Я просто заметил ответ Smead как принятый. Я открою еще один вопрос, чтобы спросить, есть ли разница между этими двумя подходами, поскольку мне непонятно, почему они оба работают, и если есть какие-то важные различия. Благодарю. – carlossierra

ответ

1

Попробуйте

cmd /C "asadmin --host localhost --port !port! undeploy appName" 
Смежные вопросы