Windows批处理:从文本文件中的行构建字符串

时间:2015-01-09 13:52:46

标签: batch-file

我有一个简单的文本文件,每个文件包含一个文件名。我想合并所有这些文件。我的计划是读取文本文件,构建一个类似“filename1 + file2 + f3”的字符串,然后将其用作复制/ b的参数。

但是,我无法正确阅读文件。

这就是我现在所拥有的:

SET x=
FOR /F %%G IN (merge.txt) DO SET x=%x%+%%G
ECHO %x%

但是,这里的“递归”似乎无法正常工作,%x%只是设置为“+ fl”,其中fl是文件中的最后一个文件名。

我该如何正确地做到这一点?

1 个答案:

答案 0 :(得分:3)

您的逻辑是正确的,但您只是错过了延迟扩展使用。

SETLOCAL EnableDelayedExpansion

SET "x="
FOR /F %%G IN (merge.txt) DO SET x=!x!+%%G
ECHO %x%

REM Trim the leading +
SET x=%x:~1,999%
ECHO %x%    

ENDLOCAL

如果没有延迟扩展,%x%仅在<{1}}循环开始时 进行评估,因此每次迭代都会为空。通过启用延迟扩展,在每次迭代时评估FOR(对此的表示法),以便它构建您正在寻找的复合字符串。