【问题标题】:Command clears environment in batch file命令清除批处理文件中的环境
【发布时间】: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


    【解决方案1】:

    试试

    cmd /C "asadmin --host localhost --port !port! undeploy appName"
    

    【讨论】:

      猜你喜欢
      • 2022-08-18
      • 2021-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 2012-10-03
      • 1970-01-01
      相关资源
      最近更新 更多