使用批处理从文件中删除某些行

Deleting certain lines from a file using batch

所以我需要能够根据该行的第一个单词从文本文件中删除某些行。

我试过type file.txt | findstr /v %VAR% file.txt>file.txt,但那样只会清除整个文件。

我也试过了

set /p VAR=word: 
type file.txt | findstr /v %VAR% file.txt>new_file.txt
del /q file.txt
ren new_file.txt file.txt

但我仍然遇到同样的问题。 无论如何我可以做到这一点吗?

为什么要使用 type 和管道 |,即使 findstr 可以自己读取文本文件?只需使用:

findstr /V /I "^%VAR%\>" "file.txt" > "new_file.txt"

^ 将字符串锚定到行首,\> 构成一个单词边界,因为你想匹配第一个单词。

如果 %VAR% 可能还包含 SPACEs,它分隔多个搜索字符串,使用它来将整个字符串保留为一个搜索字符串:

findstr /V /I /R /C:"^%VAR%\>" "file.txt" > "new_file.txt"

如果要进行区分大小写的搜索,请删除 /I 选项。

要用新文件覆盖原始文件,只需使用:

move /Y "new_file.txt" "file.txt" > nul