我有这个: set myvar = ^J | FIND /N /I "texttolookfor" %WINDIR%\system32\drivers\etc\hosts
set myvar = ^J | FIND /N /I "texttolookfor" %WINDIR%\system32\drivers\etc\hosts
现在我有它罚款的文本行
我怎样才能从文件中删除这些行?
我知道我可以用FOR
运行,但是删除部分对我来说仍然很棘手
我读了findstr
,它认为是更好的,但也找不到任何东西删除
现在我读了
FIND /V "texttolookfor" %WINDIR%\system32\drivers\etc\hosts > newfile
它将文件保存到一个新的没有find的string…但添加
“——————%WINDIR%\ SYSTEM32 \ DRIVERS \等\主机”
在开始,但是当我尝试
FIND /V "texttolookfor" %WINDIR%\system32\drivers\etc\hosts > %WINDIR%\system32\drivers\etc\hosts
这是行不通的…
你的命令:
FIND /V "texttolookfor" %WINDIR%\system32\drivers\etc\hosts > newfile
将------------------%WINDIR%\system32\drivers\etc\hosts
到文件的顶部,因为这是FIND
默认输出的一部分。 尝试没有redirect,看看。
FIND /V "texttolookfor" %WINDIR%\system32\drivers\etc\hosts ---------- C:\WINDOWS\SYSTEM32\DRIVERS\ETC\HOSTS # Copyright (c) 1993-2009 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. ...
TYPE
可用于捕获文件, 通过 FIND
redirect其输出,而不应显示文件/path:
TYPE %WINDIR%\system32\drivers\etc\hosts | FIND /V "texttolookfor"
当然,这也可以redirect到一个新的文件:
TYPE %WINDIR%\system32\drivers\etc\hosts | FIND /V "texttolookfor" > newfile
尝试Grep的Win32端口
假设你想清除任何包含xyz
的行,下面的命令将执行你所需要的。
grep -v xyz inputfile.txt > outputfile.txt
如果你想匹配一整行,这也可以使用正则expression式。 正如MDMarra在评论中已经说过的那样,请解释一下你正在做的事情的大局。
ps将输出重新映射到原始文件上,可能不是一件好事,特别是在试验时,尤其是在系统文件时。