【发布时间】:2016-08-20 01:28:57
【问题描述】:
我是批处理文件的新手,所以如果我在这里没有使用正确的术语,请原谅我。
我有一个批处理文件,需要从我列出的所有 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)的某种限制?
【问题讨论】:
标签: windows batch-file glassfish