windows batch命令用于循环设置环境变量

时间:2013-07-11 16:23:30

标签: windows batch-file environment

我正在尝试找到一种方法来动态构建包含我的应用程序的WEB-INF / lib文件夹下的JAR文件列表的环境变量。

这是我到目前为止所做的,但它每次都会过度编写,所以当你到达循环结束时,你只需要在变量中设置循环中的最后一个文件。

 SETLOCAL ENABLEDELAYEDEXPANSION

for %%f IN (WEB-INF/lib/*.jar) DO (

  SET JAR_LIST=%JAR_LIST%;%%f

)

ECHO JAR_LIST -- %JAR_LIST%

所以这会产生......

  

C:\ apache \ Tomcat6.0 \ webapps \ myapp>(SET JAR_LIST =。; xsltcbrazil.jar)

     

C:\ apache \ Tomcat6.0 \ webapps \ myapp>(SET JAR_LIST =。; xsltcejb.jar)

     

C:\ apache \ Tomcat6.0 \ webapps \ myapp>(SET JAR_LIST =。; xsltcservlet.jar)

     

C:\ apache \ Tomcat6.0 \ webapps \ myapp> ECHO JAR_LIST - 。; xsltcservlet.jar

     

JAR_LIST - 。; xsltcservlet.jar

1 个答案:

答案 0 :(得分:3)

更改

SET JAR_LIST=%JAR_LIST%;%%f

SET JAR_LIST=!JAR_LIST!;%%f

这将使用运行时值而不是加载时间值。 这样做可能更好,以避免领先;

SETLOCAL ENABLEDELAYEDEXPANSION
SET "JAR_LIST="
for %%f IN (WEB-INF/lib/*.jar) DO (
if "!JAR_LIST!"=="" (SET JAR_LIST=%%f) ELSE (SET JAR_LIST=!JAR_LIST!;%%f)
)
ECHO JAR_LIST -- %JAR_LIST%