Я хочу получить (разделенный точкой с запятой) список всех .dll и .exe в каталоге как переменную для передачи в качестве аргумента в исполняемый файл. Я попробовал несколько вещей, но это никогда не работает должным образом. У меня есть часть пути - следующий распечатывает список файлов, которые я ищу:
CLS
@ECHO OFF
SET INPUT_FILES=
for /f %%x in ('dir /b E:\Builds\MyProgram\Release\*.exe E:\Builds\MyProgram\Release\*.dll') do ECHO %%x
... но следующий шаг не совсем правильный, и я изо всех сил пытаюсь понять, что я ошибся:
CLS
@ECHO OFF
SET INPUT_FILES=
for /f %%x in ('dir /b E:\Builds\MyProgram\Release\*.exe E:\Builds\MyProgram\Release\*.dll') do IF DEFINED INPUT_FILES SET INPUT_FILES=INPUT_FILES;%%X ELSE SET INPUT_FILES=%%X
ECHO %INPUT_FILES%
Я собираюсь передать %INPUT_FILES%
в качестве входных данных для другого исполняемого файла, если я смогу решить, как решить проблему здесь.
Редактировать
Если я выполняю следующие команды, я могу обновить переменную INPUT_FILES:
IF "%INPUT_FILES%"=="" (SET INPUT_FILES=Test1) ELSE (SET INPUT_FILES=Test1a)
IF "%INPUT_FILES%"=="" (SET INPUT_FILES=Test2) ELSE (SET INPUT_FILES=%INPUT_FILES%;Test2a)
ECHO %INPUT_FILES%
.. который выводит:
Test1;Test2a
.. но если я попытаюсь добавить это в цикл FOR
, я ничего не получу:
CLS
REM @ECHO OFF
SET INPUT_FILES=
for /f %%X in ('dir /b E:\Builds\MyProgram\Release\*.exe E:\Builds\MyProgram\Release\*.dll') do (IF "%INPUT_FILES%"=="" (SET INPUT_FILES=%%X) ELSE (SET INPUT_FILES=%INPUT_FILES%;%%X))
ECHO %INPUT_FILES%