与其他文件比较时,如何从第一个文件中删除公共名称=值对

时间:2013-05-29 03:53:28

标签: batch-file

我有两个.properties文件,如下所示

    first.properties                    second.properties
    -----------------                   ---------------------
    firstname=firstvalue                fourthname=fourthvalue
    secondname=secondvalue              sixthname=sixthvalue
    thirdname=thirdvalue                nineththname=ninethvalue
    fourthname=fourthvalue              tenthname=tenthvalue
    fifthname=fifthvalue
    sixthname=sixthvalue
    seventhname=seventhvalue

我想比较两个文件,需要从first.properties中删除常见的名称 - 值对。 输出文件应为

    third.properties.
    ------------------ 
    firstname=firstvalue                
    secondname=secondvalue              
    thirdname=thirdvalue            
    fifthname=fifthvalue
    seventhname=seventhvalue

我使用了以下代码,但是它给出了笛卡尔产品方案。请你帮助我实现上述目标。

for /F "tokens=1,2 delims==" %%E in (first.properties) do (
    for /F "tokens=1,2 delims==" %%G in (second.properties) do (
    if "%%E" NEQ "%%G" echo %%E=%%F>>!HOME!\Properties\third.properties
    )
    )

2 个答案:

答案 0 :(得分:1)

要非常小心,你要完全解释你的任务。 有了这些新信息,这里就可以了。

@echo off
pushd "d:\folder"
copy /y "first.properties" "third.properties" >nul
for /f "delims==" %%a in (' type "second.properties" ') do (
find /v /i "%%a=" <"third.properties" > "third.properties.tmp"
move /y "third.properties.tmp" "third.properties" >nul
)

答案 1 :(得分:0)

试试这个:

findstr /vg:second.properties first.properties>third.properties