2015-07-06 71 views
0

我有一個包含特定ID列表的文件。每個ID都在自己的行上,同一行上可能會有一些額外的文本。我還有一個文件,其中包含需要從第一個文件中刪除的確認的錯誤ID列表。從包含來自其他文件的行的文件中刪除行

我想我可以爲BadIDs.txt的每一行運行findstr /v <bad ID> IDs.txt > IDs.txt。我的代碼是這樣的:

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

它給了我一個空的文件到最後。我究竟做錯了什麼?

回答

0
  1. 雙引號不會讓for循環正常工作,所以文件路徑必須沒有這些。
  2. 無法寫入您正在讀取的同一文件,因此您必須使用臨時文件。

工作代碼:

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 
) 
相關問題