2015-05-27 383 views
0

我有一個帶有以下命令的.bat文件。使用FOR命令在批處理文件中設置變量

我的目標是將CLASSPATH變量值與%% 1的值連接起來。

這三個第一個命令(FOR命令之外)正確連接了CLASSPATH,但FOR命令只是用迭代的最後一個值來完成。

請幫

SET CLASSPATH=%CLASSPATH%;test1.jar 
    SET CLASSPATH=%CLASSPATH%;test2.jar 
    SET CLASSPATH=%CLASSPATH%;test3.jar 

    FOR %%1 IN ("%CXFHOME%\lib\*.jar") DO SET CLASSPATH=%CLASSPATH%;%%1 
+0

'...設置%% 1'?語法是:'set var = value' – Stephan

+0

對不起,我已經重寫了它 – josepmra

回答

4

您需要延遲擴展:

setlocal enabledelayedexpansion 
FOR %%1 IN ("%CXFHOME%\lib\*.jar") DO SET CLASSPATH=!CLASSPATH!;%%1 
echo %classpath:~1% 

的解釋和延遲擴展的示範見here

1

在腳本中使用setlocal enabledelayedexpansion,之所以爲for循環的最後一個值發生串聯,是因爲for循環在運行時被當作單指令取代,所以所有值都被替換,並且最後的值僅被反映。

相關問題