从包含其他文件中的行的文件中删除行

时间:2015-07-06 11:55:14

标签: batch-file

我有一个包含某些ID列表的文件。每个ID都在它自己的行上,并且在同一行上可能有一些额外的文本。我还有一个文件,其中包含需要从第一个文件中删除的已确认的错误ID列表。

我想我可以为findstr /v <bad ID> IDs.txt > IDs.txt的每一行运行BadIDs.txt。我的代码是这样的:

for /F "tokens=*" %%A in ("c:\BadIDs.txt") do findstr /v %%A "c:\IDs.txt" > "c:\IDs.txt"

它最终给了我一个空文件。我做错了什么?

1 个答案:

答案 0 :(得分:0)

  1. 双引号不允许for循环正常工作,因此文件路径必须没有这些。
  2. 无法写入您正在读取的同一文件,因此您必须使用临时文件。
  3. 工作代码:

    for /F "tokens=*" %%A in (c:\BadIDs.txt) do (
        findstr /v %%A c:\IDs.txt > c:\IDsTemp.txt
        move /y c:\IDsTemp.txt c:\IDs.txt > nul
    )