Delete specific line in windows hosts file with vbscript

The hosts file in Windows OS is an operating system file that maps hostnames to IP addresses. The hosts file is used to resolve hosts names before DNS, and it can be found in c:\windows\system32\drivers\etc\.

It’s not very popular nowadays for applications to place anything in this file, back in the days this file was massive.

But let’s say you have a specific line in it programmatically using VBScript. To do this, the following steps should be done:

  1. Open the hosts file
  2. Parse the file line by line
  3. Check if the line matches the input text
  4. If the line matches, delete the line
  5. Save and close the file

 

Bellow, the code for the script:

 

On Error Resume Next

Set oWSH = createobject("wscript.shell")

Line1="0.0.0.0 TEST" 
Call RemoveValues(Line1)

Sub RemoveValues(Line) 
Dim varFile 
Dim varFileLines 
Dim oWSH 


Set oWSH = CreateObject("WScript.shell") 

SysRoot = oWSH.ExpandEnvironmentStrings("%SystemRoot%") 

sFileName = SysRoot & "\system32\drivers\etc\Hosts" 

Set oFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = oFSO.OpenTextFile(sFileName, 1) 


Do Until objFile.AtEndOfStream 

varFileLines = objFile.ReadLine 

If Trim(varFileLines) <> Line Then 

If Trim(varFile) = "" Then 
varFile = Trim(varFileLines) 
Else 
varFile = varFile & vbCrLf & Trim(varFileLines) 
End If 
End If 
Loop 

objFile.Close 
Set objFile = Nothing 

Set objFile = oFSO.CreateTextFile(sFileName, True, False) 

objFile.WriteLine varFile 

objFile.Close 
Set objFile = Nothing 
End Sub

 

The only thing you need to change is Line1 with the desired text that you want to be deleted. If you want to delete multiple lines, you could do something like this:

Line1="0.0.0.0 TEST"
Line2="1.1.1.1 TEST2"
Call RemoveValues(Line1)
Call RemoveValues(Line2)

 

Hope that you find this script useful. For any script suggestions leave me an email.

 

Sharing is caring!

Leave a comment

Your email address will not be published. Required fields are marked *

16 + 18 =