【发布时间】:2011-12-07 14:29:27
【问题描述】:
我想获取目录中所有 .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%
【问题讨论】:
标签: if-statement for-loop batch-file dos