使用VBScript修改“C:\ Windows \ System32 \ drivers \ etc \ hosts”文件

时间:2013-10-28 05:00:03

标签: vbscript

我想使用VBScript向C:\Windows\System32\drivers\etc\hosts追加一行。我首先尝试使用以下代码读取此文件:

Set filestreamIN = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Windows\System32\drivers\etc\hosts",2,true)
file = Split(filestreamIN.ReadAll(), vbCrLf)
for i = LBound(file) to UBound(file)
msgbox file(i)
Next
filestreamIN.Close()
Set filestreamIN = Nothing

但我在第二行收到错误:文件模式错误。我使用这个命令运行它:

cscript "D:\Project\AXA\AXADEPROJ-867\add host.vbs"

cmd作为管理员运行。任何帮助都会很棒。

3 个答案:

答案 0 :(得分:0)

C:\Windows\System32\drivers\etc是一个目录。

答案 1 :(得分:0)

打开要追加的文件,然后输出您想要的内容。它会自动附加。

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oHosts = oFSO.GetFile("C:\Windows\System32\drivers\etc\hosts")
WScript.Echo oHosts.attributes
Set fileAPPEND = _
  oFSO.OpenTextFile("C:\Windows\System32\drivers\etc\hosts", 8, true)
fileAPPEND.Write("192.168.0.1 MyMachine")
fileAPPEND.Close()
Set fileAPPEND = Nothing
Set oHosts = Nothing
Set oFSO = Nothing

当然,这并未解决附加已存在于文件中的数据的潜在问题。

如果您想先读取文件,请打开它进行阅读,阅读数据,关闭数据,然后重新打开它以进行追加并进行更改。没有必要打开它来写作。

如果要编辑文件,请将其读入,关闭,重新打开以进行写入,然后写出编辑过的数据。

答案 2 :(得分:0)

这是你需要的bat文件

type "%windir%\system32\drivers\etc\hosts" | find /i "WEBSITE1" || echo 10.0.0.0 WEBSITE1 >> "%windir%\system32\drivers\etc\hosts"

type "%windir%\system32\drivers\etc\hosts" | find /i "SERVER1" || echo 10.0.0.0 SERVER1 >> "%windir%\system32\drivers\etc\hosts"