我遇到一种情况,需要将四个 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 (
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 行文本时,我(当然)遇到了麻烦。
GnuWin http://gnuwin32.sourceforge.net/是 GNU(类似 Unix)工具到 Windows 的移植集合,包含paste
这正是你想要的。不过,我感觉您更喜欢本地 Windows 答案,我已经想出了一个答案,但它并不漂亮。从...开始@walid2mi 的聪明解决方案 https://stackoverflow.com/questions/7031687/merge-2-txt-files-in-a-single-tab-delimited-file-in-batch/7037534#7037534并将其分解为 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
所需的时间应随文件长度线性增加,避免解决方案急剧减慢。然而,当所有文件的行数不同时,该解决方案的失败模式并不好。通常会提示用户输入缺失的行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)