【问题标题】:Merging text files line for line batch file为行批处理文件合并文本文件行
【发布时间】:2017-06-06 19:28:10
【问题描述】:

我从一个包含几列(出生日期和姓氏列)的 Excel 电子表格开始。我推断并使用了一个批处理文件来仅修改出生日期列,这样我现在就有了一个包含以下内容的文本文件(用于 SQL 查询):

BirthDateTime = '01/01/2017' AND Name LIKE '
BirthDateTime = '01/01/2016' AND Name LIKE '

我现在想要获取第二列(通过创建一个单独的 lastname.txt 文件)并将其连接到上面一行的输出文件中,以便我的姓氏文件看起来像:

SMITH
JONES

将合并到一个新的输出文件,如下所示:

(BirthDateTime = '01/01/2017' AND Name LIKE '%SMITH%') OR
(BirthDateTime = '01/01/2016' AND Name LIKE '%JONES%') OR

不幸的是,我是批处理文件的新手,我只是不知道从哪里开始。我包括了我用来在下面创建第一部分的批处理文件。

批处理文件:

@echo off
setLocal EnableDelayedExpansion
for /f "tokens=* delims= " %%a in (input.txt) do (
set /a N+=1
echo BirthDateTime = '%%a' AND Name LIKE '>>output.txt
)

【问题讨论】:

  • 如果这是一次性任务,在 EXCEL 中手动插入一列会容易得多。
  • ...否则看here如何同时读取两个文件。

标签: batch-file cmd


【解决方案1】:

根据@Stephan 的评论,我刚开始在 Excel 中执行此操作并使用以下公式:

="(BirthDateTime = '"&A2&"' AND Name LIKE '%"&B2&"%') OR" 效果很好。因为我专门询问了批处理文件,所以我不确定我是否适合接受这个作为答案。如果有人有一些代码,或者如果 Stephan 想将他的链接作为答案发布到他的代码中,我会接受,否则我会在 2 天内接受这个作为答案。

【讨论】:

    【解决方案2】:

    你的问题有点混乱。您显示了两个文本文件,但您的代码似乎使用了其他一些文件(仅限日期)。无论如何-我涵盖了两种可能性;只需使用正确的echo 行。

    读取和合并两个文件使用一个小技巧(使用两种不同的方法读取一个文件):

    @echo off
    setlocal enabledelayedexpansion
    <t2.txt (
      for /f "delims=" %%a in (t1.txt) do (
        set /p name=
        echo (%%a!name!'^) OR 
        REM echo (BirthDateTime = '%%a' AND Name LIKE '!name!'^) OR
      )
    )>out.txt
    type out.txt
    

    另一个技巧是用^ 转义echo 语句中的结束括号。如果你不这样做,解析器会将它作为循环结束,这将导致输出残缺和错误消息"OR" is not recognized as a valid command ...

    【讨论】:

      猜你喜欢
      • 2019-01-01
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多