2013-07-11 216 views
0

我想找到一種方法來動態構建環境變量,其中包含我的應用程序的WEB-INF/lib文件夾下的JAR文件的列表。windows批處理命令爲循環設置環境變量

這是我到目前爲止所做的,但是它每次都會覆蓋自己,所以當你到達循環的結尾時,你只需要在變量中設置循環中的最後一個文件。

SETLOCAL ENABLEDELAYEDEXPANSION 

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

    SET JAR_LIST=%JAR_LIST%;%%f 

) 

ECHO JAR_LIST -- %JAR_LIST% 

所以這產生...

C:\阿帕奇\ Tomcat6.0 \ web應用\ MYAPP>(SET JAR_LIST = .; xsltcbrazil.jar)

C:\ apache的\ Tomcat6.0 \ web應用\ MYAPP>(SET JAR_LIST = .; xsltcejb.jar)

C:\阿帕奇\ Tomcat6.0 \ web應用\ MYAPP>(SET JAR_LIST = .; xsltcservlet.jar)

C:\ apache的\ Tomcat的6.0 \ web應用\ 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

相關問題