If statement 使用批处理文件将多个.csv文件按行合并为一个.csv文件
我需要将四个CSV文件合并成一个CSV文件。如果我只想一个接一个地添加它们,这很容易,但是我需要让它们在CSV文件中并排出现。我知道所有四个文件都有相同数量的条目(在1000个条目范围内)。我一直在编写以下代码,这些代码适用于小文件,但对于长文件来说效率极低。有没有更简单的方法来完成同样的任务If statement 使用批处理文件将多个.csv文件按行合并为一个.csv文件,if-statement,for-loop,batch-file,If Statement,For Loop,Batch File,我需要将四个CSV文件合并成一个CSV文件。如果我只想一个接一个地添加它们,这很容易,但是我需要让它们在CSV文件中并排出现。我知道所有四个文件都有相同数量的条目(在1000个条目范围内)。我一直在编写以下代码,这些代码适用于小文件,但对于长文件来说效率极低。有没有更简单的方法来完成同样的任务 @echo off setlocal enabledelayedexpansion Set R=1 Set T=1 Set Y=1 Set U=1 for /f %%a in (test1.txt) do
@echo off
setlocal enabledelayedexpansion
Set R=1
Set T=1
Set Y=1
Set U=1
for /f %%a in (test1.txt) do (
set I=!R!
for /f %%b in (test2.txt) do (
set J=!T!
for /f %%c in (test3.txt) do (
set K=!Y!
for /f %%d in (test4.txt) do (
set L=!U!
If !I!==!J! If !J!==!K! If !K!==!L! echo %%a,%%b,%%c,%%d >> TestComplete.txt
Set /a U=U+1
)
Set U=1
Set /a Y=Y+1
)
Set Y=1
Set /a T=T+1
)
Set T=1
Set /a R=R+1
)
注意:我知道我粘贴的代码使用的是.txt文件,而不是.csv文件。我想对一方有效的东西对另一方有效
同样,只要文件很小,上面的代码似乎工作得很好。当然,当文件(在本例中为test1.txt)包含大约1000行文本时,我会遇到麻烦 是GNU(类Unix)工具到Windows的端口集合,它包含粘贴
,这正是您想要的。然而,我感觉你更喜欢原生Windows的答案,我已经想出了一个,但它并不漂亮。从开始并将其条带化到coljoin.bat:
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (%1) do (
set /p line=
echo !line!, %%a
)
您可以通过以下方式连接四个文件:
type a.txt | coljoin b.txt | coljoin c.txt | coljoin d.txt > TestComplete.txt
所需时间应随文件长度线性增加,以避免解决方案的急剧减速。但是,当所有文件的行数不相等时,此解决方案的故障模式不好。通常会提示用户输入缺少的行 这些文件有头吗?如果没有,您可以简单地使用“复制”命令将它们组合起来。@a_horse_和_no_名称:这将实现“全部联合”。但他们想要一种“加入rownum”。