Пакет и цикл for

У меня есть приложение java, запущенное a .файл cmd. Я хочу установить путь к классам приложения через этот пакет, все необходимые банки находятся в папке lib.

вот что я пробовал :

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

Удивительно, но кажется, что он не действует так, как ожидалось. Допустим, в папке lib есть 3 jar:

  • Пикачу.Джар
  • Соник.Джар
  • Марио.Джар

вот что происходит :

  1. set _classpath=.
  2. set _classpath=.Пикачу.Джар
  3. set _classpath=.;звуковой.Джар
  4. set _classpath=.;Марио.Джар

очевидно, что я ищу, чтобы получить

  • установить _путь класса.=Пикачу.jar; sonic.банку;Марио.Джар

есть идеи ?

спасибо и с уважением,

2 ответов


поместите это в верхней части пакетного файла:

setlocal enabledelayedexpansion

затем внутри цикла for, заменить %_classpath% С !_classpath!

без задержки расширение включено,%_classpath% расширяется один раз, в начале цикла for.


[Edit] в ответ на комментарий, Вот полный список кода

@echo off
setlocal enabledelayedexpansion

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

echo %_classpath%
pause

CMD.EXE расширения %...% перед запуском цикла.

вам нужно отложенное расширение переменной, это объясняется в set /? из командной строки.