使用批处理文件将多个 .csv 文件逐行合并为一个 .csv 文件

2024-01-19

我遇到一种情况,需要将四个 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(使用前将#替换为@)

使用批处理文件将多个 .csv 文件逐行合并为一个 .csv 文件 的相关文章

  • for 循环范围内的初始值设定项列表

    我有从单个超类型派生的不同类型的对象 我想知道使用中有没有什么缺点std initializer在 for 循环范围内列出 如下所示 for auto object std initializer list object1 object2
  • 中断/退出嵌套在 vb.net 中

    如何摆脱 vb net 中的嵌套 for 或循环 我尝试使用 exit for 但它只跳转或中断了一个 for 循环 我怎样才能做到以下几点 for each item in itemList for each item1 in itemL
  • 有条件地将字符串转换为特定数值

    我确信对此有一个简单的答案 但我已经扫描了堆栈溢出 但无法找到解决方案 似乎 sapply 和 ifelse 函数的组合可能可以完成这项工作 但我不确定 所以我有一个包含字符的数据框 除了一列是数值 Create dataframe whi
  • 初始化变量以减少 OMP

    OpenMP 标准指定了缩减变量的初始值 那么我是否必须初始化该变量以及在以下情况下如何执行此操作 int sum for int it 0 i
  • Javascript for 循环和 setTimeout 问题

    所以我认为下面的代码确实很简单 但却变得很令人头疼 它应该是一个循环 将改变对象的不透明度 使其消失 function doSomething var i 10 for i 10 i gt 0 i i 1 setTimeout setOpa
  • 在VBA中使用for循环调用连续的变量名(即car1,car2...car10)

    设想 我有七个变量 labelKid1 labelKid2 LabelKid3 我正在搜索单元格以查找不为空的单元格 然后将值输入到标签中 从 labelKid1 开始 然后转到下一个标签 问题 有没有办法让我们使用 for 循环来遍历这些
  • 检查非零的惯用方法

    当我想检查一个值是否为0在C中 它是如何惯用的 if num if num 0 虽然这是一个品味问题 但我发现这很大程度上取决于意图 如果该值用作布尔值 没关系 如果值正在计算某些东西 则相等更有意义 if isVisible if isV
  • DOS批处理文件for循环中的变量赋值问题

    我在 DOS 脚本 for 循环中遇到变量赋值问题 它从不分配值 它总是空白 下面是示例代码 echo off set ans 1 SET STRING ans echo Parsing the string STRING for f to
  • 如果单元格包含字符串

    如果单元格的邻居包含特定字符串 如何为单元格分配值 例如 A 列中的字段 dog11 cat22 cow11 chick11 duck22 cat11 horse22 cat33 B 列中的语法为 IF SEARCH cat A1 cat
  • 如何让批处理文件等待另一个批处理文件完成执行?

    如何让一个批处理文件等待另一个批处理文件完成 例如 我有 echo hi gt r txt echo some piece of code gt gt r txt start ar bat echo some piece of code g
  • 批处理:在带有管道的 for 循环中执行带引号的命令来查找

    您能否建议如何修复下面的命令 该命令会从 svn 中删除未版本控制的项目 rem echo off for f tokens 2 i in c Program Files TortoiseSVN bin svn exe status no
  • VBA 使用 Like 运算符删除行

    简单的事情并不简单 我试图根据具有以 2L 开头的数据的特定列删除行 所以我写了这段代码 LastRow可以理解 Sub Cleanup For i 1 To LastRow If Range F i Like 2L Then Rows i
  • 访问另一个批处理文件中的批处理函数

    好吧 假设我们有一个名为 lib cmd 的文件 它包含 echo off GOTO EXIT FUNCTION echo something GOTO EOF EXIT exit b 然后我们有一个名为 init cmd 的文件 它包含
  • python中的“如果不是”条件语句[重复]

    这个问题在这里已经有答案了 if not start new next None return new 如果不是 是什么意思 这段代码什么时候执行 这和说的是一样的吗 if start None 那么做点什么 if是声明 not start
  • 如何通过 DOS 批处理命令发送电子邮件?

    我在 DOS 中有一个批处理文件 可以进行一些检查 完成后我需要发送一封电子邮件 我在 interwebz 上找到了一些解决方案 但大多数都是第三方的 或者只是在 Outlook 中打开新邮件 我需要命令来发送完整的电子邮件 而无需任何人工
  • 如何在for循环中引用变量?

    我正在循环访问不同的 data tables 和 data table 中的变量 但我在引用内部变量时遇到问题for loop dt1 lt data table a1 c 1 2 3 a2 c 4 5 2 dt2 lt data tabl
  • 如何在 Python 中使用 .format() 打印“for”循环中的列表?

    我是 Python 新手 我正在编写一段非常简单的代码 使用 for 循环打印列表的内容 format 我想要如下的输出 但我收到此错误 names David Peter Michael John Bob for i in names p
  • C for 循环索引:新 CPU 中的前向索引更快吗?

    在我订阅的邮件列表上 两位知识渊博的 IMO 程序员正在讨论一些优化的代码 并说了以下内容 在 5 8 年前发布的 CPU 上 向后迭代 for 循环稍微快一些 e g for int i x 1 i gt 0 i 因为比较i归零比将其与其
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • 如何将 GIT 调用的输出获取到批处理脚本中的变量中?

    我有一个 git 命令来获取当前存储库的最新 SHA 如下所示 git log pretty format H n 1 我有一个 Windows 批处理脚本 我想按如下方式使用它 SET CURRENT SHA 但我不知道如何将从 git

随机推荐