Batch file 基于令牌删除txt文件中的行

Batch file 基于令牌删除txt文件中的行,batch-file,Batch File,我有一个txt文件full_add,在这里我需要根据full_delete中的标记查找和删除行。然后,将full_add与其余行一起保存。 这是每个文件中的示例数据: 全加 Employee,800751,,1,9999,,,,, Employee,800752,,1,9999,,,,, Employee,800761,,1,9999,,,,, Employee,800762,,1,9999,,,,, 完全删除 Employee,800751 Employee,800762 Employee,

我有一个txt文件full_add,在这里我需要根据full_delete中的标记查找和删除行。然后,将full_add与其余行一起保存。 这是每个文件中的示例数据:

全加

Employee,800751,,1,9999,,,,,
Employee,800752,,1,9999,,,,,
Employee,800761,,1,9999,,,,,
Employee,800762,,1,9999,,,,,
完全删除

Employee,800751
Employee,800762
Employee,800742
退市后完全添加的最终结果

Employee,800752,,1,9999,,,,,
Employee,800761,,1,9999,,,,,
这是我的想法:

FOR /F "eol=; tokens=2 delims=," %i in (full_delete.txt) do find /v "%i" full_add.txt > full_add.txt

我得到了一个空的文件。如果我为
>tmp.txt
更改
>full_add.txt
,它会工作,但只删除找到的最后一个令牌行。谢谢Frank

我认为您应该保留当前的更改,将其输出到
tmp.txt
,但在这种情况下,您还需要删除原始
full\u add.txt
并将
tmp.txt
重命名为
full\u add.txt

FOR /F "eol=; tokens=2 delims=," %i IN (full_delete.txt) DO (FIND /v "%i" < full_add.txt > tmp.txt & DEL full_add.txt & RENAME tmp.txt full_add.txt)
FOR /F "eol=; tokens=2 delims=," %i IN (full_delete.txt) DO (FIND /v "%i" < full_add.txt > tmp.txt & COPY tmp.txt full_add.txt & DEL tmp.txt)
更新


我通过添加
更改了两个FIND命令,我使用了第一种方法,效果很好,只在文件的开头添加了3行:------------FULL_add_EMPLOYEE.TXT------FULL_add_EMPLOYEE.TXT------FULL_add_EMPLOYEE.TXT,如果我将其批量(使用%%I)放入,则会出现语法错误。谢谢你快速而出色的帮助。F
FOR /F "eol=; tokens=2 delims=," %i IN (full_delete.txt) DO (
  FIND /v "%i" < full_add.txt > tmp.txt
  COPY tmp.txt full_add.txt
  DEL tmp.txt
)