批量比较第一个文件中的字符串以删除第二个文件中的完整行

时间:2014-07-16 19:29:59

标签: batch-file compare cut findstr

我需要一个批处理文件来挑选FileA中的每个字符串(1个字符串= 1行)并在FileB中搜索它并从此FileB中删除包含此字符串的完整行。

我尝试使用以下几种组合:

findstr /vixg:"FileA" "FileB" >"File.new"
type FileA.txt |findstr /v I%%

你们有解决方案吗?

由于

3 个答案:

答案 0 :(得分:0)

尝试这样的事情:

for /f "tokens=*" %%i in (fileA.txt) do ( type fileB.txt | find "%%~i" /v > fileB.txt )

答案 1 :(得分:0)

我希望这些状态可以帮到你:

@echo off

set /p A="Insert first file path: "
:: FileA
set /p B="Insert second file path: "
:: FileB

for /f "delims=¶" %%g in (%B%) do (

findstr /c:"%%g" %A% > nul || echo %%g >> TEMP.txt

)

del /P %B%
ren TEMP.txt %B%
pause

但是,通过这些陈述,可以比较整行而不仅仅是一行的部分,但我希望无论如何你都在寻找。

答案 2 :(得分:0)

可能最短的解决方案是使用grep,这个特定工作的正确工具。使用-f选项从FileA而不是从命令行读取模式,使用-v选项取消匹配(即打印任何的行匹配):

grep -v -f FileA FileB