【问题标题】:In MS DOS copying several files to one file在 MS DOS 中将多个文件复制到一个文件
【发布时间】:2011-10-09 12:34:14
【问题描述】:

我正在尝试使用一个包含多个 .csv 文件的文件夹,并使用 MS DOS 将所有这些文件和其中的信息合并到一个文件中。有什么建议吗?

【问题讨论】:

    标签: dos


    【解决方案1】:

    文件名必须正确排序才能正确组合!

    file1.bin file2.bin ... file10.bin 无法正常工作

    file01.bin file02.bin ... file10.bin 正常工作

    c:>for %i in (file*.bin) do type %i >> onebinary.bin
    

    适用于 ascii 或二进制文件。

    【讨论】:

    • 这对我有用双引号。对于 (*.csv) 中的 %i,请键入 "%i" >> onefile.csv
    【解决方案2】:
    type data1.csv > combined.csv
    type data2.csv >> combined.csv
    type data3.csv >> combined.csv
    type data4.csv >> combined.csv
    

    等等

    假设您使用的文件没有标题并且所有文件都有相同的列。

    【讨论】:

      【解决方案3】:
      for %f in (filenamewildcard0, filenamewildcard1, ...) do echo %f >> newtargetfilename_with_path
      

      与 Mike T 的想法相同;在 MessyDog 的 127 个字符的命令行限制下可能会更好地工作

      【讨论】:

        【解决方案4】:

        如果这是批处理脚本(.bat 文件)的一部分,并且您有大量文件,则可以使用多行 ^ 和可选的 /Y 标志来禁止提示确认您想要覆盖现有的目标文件。

        REM Concatenate several files to one
        COPY /Y ^
            this_is_file_1.csv + ^
            this_is_file_2.csv + ^
            this_is_file_3.csv + ^
            this_is_file_4.csv + ^
            this_is_file_5.csv + ^
            this_is_file_6.csv + ^
            this_is_file_7.csv + ^
            this_is_file_8.csv + ^
            this_is_file_9.csv ^
                output_file.csv
        

        这比在一行中执行命令更简洁。

        【讨论】:

        • 这种格式更简洁。而且我可以轻松地在 VS Code 中格式化和准备数千个文件名。谢谢!
        • 这在 DOS 中不起作用(因为这个问题被标记了),因为 DOS 不支持 ^ 作为转义字符
        • @phuclv,Windows 批处理确实使用 ^ 来分割批处理脚本中的行,请参见此处stackoverflow.com/questions/69068/…
        • @default_avatar 我当然知道,这就是我在上面发表评论的原因。它是 not 用于分割行的字符,而是 Windows cmd 中的 escape character。这个问题被标记为 MS DOS,所以这不适用。 DOS 没有任何转义字符,命令必须在一行中
        【解决方案5】:

        确保您已映射 y: 驱动器,或将所有文件复制到本地目录 c:/local

        c:/local> 复制 *.* c:/newfile.txt

        【讨论】:

        【解决方案6】:
        copy *.csv new.csv
        

        不需要 /b,因为 csv 不是二进制文件类型。

        【讨论】:

        • 如何撤消此操作?在这里查看我的问题:stackoverflow.com/questions/37357481/…
        • 注意。这在 powershell 中不起作用,因此请确保您使用的是 cmd。使用经典命令提示符完美运行!
        【解决方案7】:
        copy /b file1 + file2 + file3 newfile
        

        每个源文件都必须使用+ 添加到复制命令中,最后列出的文件名将是连接数据复制到的位置。

        【讨论】:

        • 没有复制所有 (*) 命令? BC 我有 30 到 40 个文件。
        • 此版本允许您指定复制文件的确切顺序。使用上面的 *.csv 方法,您将按随机顺序获取文件。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-23
        相关资源
        最近更新 更多