簡體   English   中英

批處理和for循環

[英]Batch and the for loop

我有一個.cmd文件啟動的java應用程序。 我想通過這個批處理設置應用程序的類路徑,所有需要的jar都進入lib文件夾。

這是我嘗試過的:

 set _classpath=.
for %%i in (%1/lib/*.*) do ( set _classpath=%_classpath%;%%i )

令人驚訝的是,它似乎沒有像預期的那樣發揮作用。 假設lib文件夾中有3個jar:

  • pikachu.jar
  • sonic.jar
  • mario.jar

這是發生的事情:

  1. set _classpath =。
  2. set _classpath =。; pikachu.jar
  3. set _classpath =。; sonic.jar
  4. set _classpath =。; mario.jar

顯然,我希望得到的是

  • set _classpath =。; pikachu.jar; sonic.jar; mario.jar

任何的想法 ?

感謝致敬,

將其放在批處理文件的頂部:

setlocal enabledelayedexpansion

然后在for循環中,用!_classpath!替換%_classpath% !_classpath!

如果未啟用延遲擴展, %_classpath%將在for循環開始時展開一次。


[編輯]在回復評論時,這是一個完整的代碼清單

@echo off
setlocal enabledelayedexpansion

set _classpath=.
for %%i in (%1/lib/*.*) do (
    set _classpath=!_classpath!;%%i
)

echo %_classpath%
pause

CMD.EXE在運行循環之前擴展%...%

你需要延遲變量擴展,這在set /?有解釋set /? 從命令提示符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM