2

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

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

但我在第二行得到了一个错误:Bad file mode。我使用以下命令运行它:

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

cmd管理员身份运行。任何帮助都会很棒。

4

3 回答 3

0

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

于 2013-10-28T05:11:56.623 回答
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

当然,这并不能解决附加文件中已有数据的潜在问题。

如果你想先读取文件,打开它进行读取,读取数据,关闭它,然后重新打开它进行附加并进行更改。无需打开它进行书写。

如果要编辑文件,读入、关闭、重新打开写入,然后写出编辑后的数据。

于 2015-01-22T17:15:07.330 回答
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"
于 2016-06-05T15:12:04.250 回答