合并行批处理文件的文本文件行

时间:2017-06-06 19:28:11

标签: batch-file cmd

我开始使用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
)

2 个答案:

答案 0 :(得分:0)

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

="(BirthDateTime = '"&A2&"' AND Name LIKE '%"&B2&"%') OR"工作得很好。由于我特意询问了批处理文件,因此我不确定接受这个作为答案是否合适。如果有人有一些代码,或者如果Stephan希望将他的链接作为答案发布并对他的代码进行一些解释,我会接受,否则我会在2天内接受这个答案。

答案 1 :(得分:0)

你的问题有点令人困惑。您显示两个文本文件,但您的代码似乎使用其他一些文件(仅限日期)。无论如何 - 我涵盖了两种可能性;只需使用正确的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 ...