从文本文件获取输入并根据输入删除另一个文本文件中的行

时间:2017-09-15 10:07:58

标签: windows batch-file

我有一个文本文件(name.txt),格式如下:

aaaaaaaa 1245
bbbbbbbb,456
1.2.3.4 nnnnnnnn
cccccccc

另一个文本文件(cleanup.txt)包含我需要删除的名称:

aaaaaaaa
nnnnnnnn

如何根据cleanup.txt使用批处理文件删除name.txt中的某些行并创建新文件new_name.txt?

new_name.txt

bbbbbbbb,456
cccccccc

我现在正在做的是手动编辑批处理文件命令

type name.txt | findstr /v aaaaaaaa | findstr /v nnnnnnnn > new_name.txt

2 个答案:

答案 0 :(得分:2)

你应该可以使用这样的基本命令:

FindStr/VG:"cleanup.txt" "name.txt">"new_name.txt"

答案 1 :(得分:0)

可以使用Compo已经发布的命令 FINDSTR 来完成此操作。

%SystemRoot%\System32\findstr.exe /V /G:"cleanup.txt" "name.txt" >"new_name.txt"

FINDSTR name.txt的每一行中搜索cleanup.txt中列出的任何字符串,并在正匹配时从name.txt输出该行。

但输出是来自name.txt NOT 的行,其中包含cleanup.txt中列出的字符串,因为选项/V会反转输出。

FINDSTR 的输出被重定向到文件new_name.txt

您可以添加切换/B以仅写入文件new_name.txt NOT ,其中包含cleanup.txt 开头时的任何字符串name.txt中的一行

打开命令提示符窗口并运行findstr /?以获取有关 FINDSTR 选项的更多信息。

另请阅读Microsoft有关Using Command Redirection Operators

的文章