7

Я пытаюсь заполнить переменную списком файлов, разделенных пробелами, но я не могу понять, как это сделать.

Вот что у меня так далеко:

set js_files=
for %%f in (js/*.js) do set js_files=%js_files% js/%%f
echo %js_files%
C:\path\to\jsminifier.exe --inputfiles %js_files%

Я ожидал, что это добавит переменную js_files к следующему имени файла, но вместо этого она заменит всю переменную:

c:\dir>script.cmd
c:\dir>set js_files=
c:\dir>for %f in (js/*.js) do set js_files= js/%f
c:\dir>set js_files= js/one.js
c:\dir>set js_files= js/two.js
c:\dir>set js_files= js/three.js
c:\dir>echo  js/three.js
js/three.js

Я вижу во второй строке вывода, что вся строка for кажется, анализируется перед выполнением, поэтому (начальное) пустое значение переменной используется для всех итераций.

Кто-нибудь знает, как правильно добавить к переменной?

Спасибо!

1 ответ1

5

Попробуйте изменить это на это:

set js_files=
for %%f in (js/*.js) do set js_files=!js_files! js/%%f
echo %js_files%
C:\path\to\jsminifier.exe --inputfiles %js_files%

Обратите внимание на изменение set js_files=%js_files% js/%%f для set js_files=!js_files! js/%%f - используя восклицательные знаки вместо знаков процента, вы даете команду оболочке динамически расширять переменную среды во время выполнения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .