我是Windows批处理的新手-我想使用Windows批处理将多个文本文件连接为一个。要合并的文件在列表中指定,并且可以是动态的。我有文件a.txt,b.txt,c.txt .... z.txt的单个目录。我需要将其中的一部分连接到merged.txt中 例如,如果list是输入列表
set list = a f z
然后,我希望merged.txt具有a.text,f.txt和z.txt的内容。 我已经尝试过的想法是
1)输入* .txt> merged.txt:-对我不起作用,因为它将合并所有文本文件。
2)复制a.txt + f.txt + z.txt merged.txt:-但这仅适用于此输入。
有人有什么想法吗?
答案 0 :(得分:1)
不确定您要如何调用批处理文件,因此该消息即将发布。
但是我认为您对a.txt + f.txt + z.txt merged.txt的副本很了解
只需使用命令行参数(最多可以有9个)动态构建该列表
@echo off
set copyfiles=
for /d %%i in (%*) do call :process %%i
goto :output
:process
if "%copyfiles%" NEQ "" (
set copyfiles=%copyfiles%+%1.txt
)
if "%copyfiles%" EQU "" (
set copyfiles=%1.txt
)
goto :end
:output
copy %copyfiles% merge.txt
:end
然后将使用
执行merge-them.cmd a b c f
或者您可以设置一个变量
mylist=a,b,c,f
然后您的FOR循环将引用%mylist%而不是%*
答案 1 :(得分:1)
for
命令用于处理列表:
set "list=a f z"
for %%a in (%list%) do type %%a.txt >>merged.txt
注意:%%a
是批处理文件语法。如果要直接在命令行上使用它,请改用%a
。
以下操作更快(因为它只打开目标文件一次),但是您不会注意到列表中只有几个条目(如果列表很大,它可能会快几百倍):>
(for %%a in (%list%) do type %%a.txt)>merged.txt