Batch file 基于令牌删除txt文件中的行
我有一个txt文件full_add,在这里我需要根据full_delete中的标记查找和删除行。然后,将full_add与其余行一起保存。 这是每个文件中的示例数据: 全加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,
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
)