2013-07-11 19 views
0

Я пытаюсь найти способ динамически создавать переменную en environment, содержащую список файлов JAR в папке WEB-INF/lib моего приложения.windows batch command for loop set variable variable

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

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 \ Tomcat 6,0 \ WebApps \ MyApp> ECHO JAR_LIST -;. Xsltcservlet.jar

JAR_LIST -;. Xsltcservlet.jar

ответ

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% 
+0

Смотрите также http://stackoverflow.com/questions/22774259/issue-with-setting-environment-variable-through-bat-file-to-execute-a-java-progr. Если вы хотите использовать эту переменную позже, вам нужно «ENDLOCAL & SET JAR_LIST =% JAR_LIST%». – ajb