【问题标题】:Merge 3 text files line by line using batch file. The lines contains specials char. and spaces使用批处理文件逐行合并 3 个文本文件。这些行包含特价字符。和空格
【发布时间】:2014-11-20 14:35:45
【问题描述】:

您好,我想使用批处理文件逐行合并 3 个文本文件。 这些行包含特价字符。和空格。 如果文件只有一行,则下面的代码有效,但如果我们有多行文本,则没有 因为结果是:

1stline1stline 第一行第二行 2stline1stline 2stline2stline 示例代码

@echo off
for /f "delims=" %%a in (a.txt) do (
    for /f "delims=" %%b in (b.txt) do (
        >>c.txt echo %%a %%b
    )
)

【问题讨论】:

  • 您的脚本会为每个a-file 行迭代所有b-file 行,以便输出为a-size × b-size(以 为单位,而不是字节)。 Windows 批处理脚本对于此类任务解决不太可行。但是,如果您出于任何原因想继续使用它,您可以添加两个行计数器,每个文件一个计数器和 echoif a-counter = b-counter。但这适用于相同“大小”的文件,因此您需要为a-size < b-sizea-size > b-size 找到一个技巧......
  • 非常感谢,很有帮助,我非常理解!
  • 请发布 3 个文件和所需输出的小示例(修改问题,不要使用评论)。当文件的行数不同时会发生什么?输出可以按任何顺序(a-b 或 b-a)放置吗?
  • @Aacini:您可以在测试脚本中生成这些文件,如下所示:if not exist filea.txt (for /L %%G in (1,1,3) do @echo a file %%G >> filea.txt) 和类似的... do @echo b file %%G >> fileb.txt)
  • @JosefZ:对不起,但这并不能回答我的任何问题...:(

标签: windows batch-file cmd


【解决方案1】:

我刚刚从this site 复制了答案并将其扩展为 3 个文件。如果没有更多细节,我无法提供更精确的解决方案...

@echo off
setlocal EnableDelayedExpansion
rem First file is read with FOR /F command
rem Second file is read via standard handle 3
rem Third file is read via standard handle 4
3< b.txt 4< c.txt (for /F "delims=" %%a in (a.txt) do (
   rem Read next line from b.txt
   set /P lineB=<&3
   rem Read next line from c.txt
   set /P lineC=<&4
   rem Echo lines of three files
   echo %%a,!lineB!,!lineC!
))

【讨论】:

  • 这些和链接非常有帮助谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 2019-01-01
  • 2021-02-24
  • 1970-01-01
  • 2012-12-08
  • 1970-01-01
相关资源
最近更新 更多