Batch file 使用批处理删除文本文件中的条目

Batch file 使用批处理删除文本文件中的条目,batch-file,Batch File,例如,如果我使用findstr/g:Filters/test.ini“Logs/filtered_users.txt 我想先搜索并写下该行,然后删除/覆盖例如“ServerLogs/users.log”中的一行 我必须设置什么 e、 g:“ServerLogs/users.log” 然后以Rus48rr IP:63.215.154.23-SETPATHDOWN 543534694689128453 35; 12 49348376384678221为例,并将其保存到“filtered_users.

例如,如果我使用
findstr/g:Filters/test.ini<“ServerLogs/users.log”>“Logs/filtered_users.txt

我想先搜索并写下该行,然后删除/覆盖例如“ServerLogs/users.log”中的一行

我必须设置什么

e、 g:“ServerLogs/users.log”

然后以Rus48rr IP:63.215.154.23-SETPATHDOWN 543534694689128453 35; 12 49348376384678221为例,并将其保存到“filtered_users.txt”中。从“ServerLogs/users.log”中删除此行后,其结果如下:

JacktheRiver IP:18.184.284.91 - SETPATHDOWN 394858913857869284 #10 39485918238584378
Laste3r IP:72.125.68.141 - SETPATHDOWN 346343253563467578 #22 35354634679795373
TOkiN1 IP:54.132.146.41 - SETPATHDOWN 343543346363643644 #41 42395833891883585

这是否可能,如果是,如何进行?

您可以找到以下匹配行:

findstr /g:Filters/test.ini < "ServerLogs/users.log" > "Logs/filtered_users.txt"

然后,您可以使用新的
users.tmp
文件覆盖
users.log

我只想在读取后,users.log中的行消失。@user1984532我认为没有临时文件是不可能的……如果使用临时文件,您必须小心,因为可能存在并发问题(例如,您提取过滤的用户,然后在复制临时文件时,会将一个新的过滤用户添加到日志中…)
findstr /g:Filters/test.ini < "ServerLogs/users.log" > "Logs/filtered_users.txt"
findstr /g:Filters/test.ini /v < "ServerLogs/users.log" > "ServerLogs/users.tmp"