Пакет и для цикла

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

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

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

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

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

Вот то, что происходит:

  1. набор _classpath =.
  2. набор _classpath =.; pikachu.jar
  3. набор _classpath =.; sonic.jar
  4. набор _classpath =.; mario.jar

Очевидно, то, что я надеюсь получать,

  • набор _classpath =.; pikachu.jar; sonic.jar; mario.jar

Какая-либо идея?

Спасибо и всего наилучшего,

6
задан Farid 30 April 2010 в 17:20
поделиться

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
4
ответ дан 17 December 2019 в 04:43
поделиться

CMD.EXE расширяет %...% перед выполнением цикла.

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

1
ответ дан 17 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: