利用vbs自动修改ip的代码

单位机房的系统需要重新安装,一共近300台设备,使用ghost网络克隆后,客户机重新设置ip是个麻烦的事情。我们使用的教学管理软件要求客户机必须有固定ip,单位5个机房如下(DNS:61.134.1.4,掩码为:255.255.255.0):













































机房

起始ip

ip终止ip

网关

机器名

工作组

 1号  192.168.1.1 100   254   No_100~No_160  S01
 2号  192.168.1.101  200  254   No_200~No_260  S02
 3号  192.168.3.1  80  254  No_300~No_360  S03
 4号  192.168.3.81  160  254  No_400~No_460  S04
 5号  192.168.3.161  240  254   No_500~No_560  S05

以下为vbs源码:
1.xp系统(测试通过,用户为Administrator,文件为E:\fxp.vbs,启动组建立快捷方式fxp.lnk以便开机后自动运行一次)


代码如下:

'/////主程序 
dim msginf,machname'定义变量:对话框,机器名 
msginf=msgbox("该程序只能执行1次,请在XP系统硬件安装完毕后执行!" &chr(13) & "是否继续?",65,"修改机器网络配置") '信息提示 
if msginf=1 then ' 如果按确定,则

machname=inputon() ' 用函数inputon()分析

if machname<>"quit" then ' 如果返回值不等于"quit",则 
wmitoip(machname) ' 运行函数wmitoip()设置机器信息 
mreboot()'重启机器 
end if 
end if

'///重启机器 
sub mreboot() 
dim fso,f1,f2 
Set fso = CreateObject("Scripting.FileSystemObject")

'删除启动组 
if fso.fileexists("C:\Documents and Settings\Administrator\「开始」菜单\程序\启动\fxp.lnk") then 
set f1=fso.getfile("C:\Documents and Settings\Administrator\「开始」菜单\程序\启动\fxp.lnk") 
f1.delete 
end if

'删除vbs文件 
if fso.fileexists("e:\fxp.vbs") then 
set f2=fso.getfile("e:\fxp.vbs") 
f2.delete 
end if

Set WshShell = Wscript.CreateObject("Wscript.Shell") 
'WshShell.Run ("shutdown.exe -r -t 5") ' 重启

end sub

'///生成计算机名 
function inputon() ' 函数inputon() 
dim t ' 变量 
while true ' 循环直到退出函数 
t=inputbox("按一下规则输入:" & chr(13) & chr(13) & "第1位代表机房号" & chr(13) & "第2、3位代表机器号" & chr(13) & "教师机用00代表" & chr(13) & "如:123代表1号机房23号机" & chr(13) & "请确保输入正确!!","请输入3位机器标识!","") ' 输入机算机名,默认值为空 
if t="" then ' 如果t等于空(按了取消键),则 
inputon="quit" ' 返回值为"quit" 
exit function ' 退出程序 
end if 
if len(t)=3 then ' 计算机号的长度为3位 
if Cint(t)>=100 and Cint(t)<580 then ' 验证 
inputon=t ' 返回需要的计算机名 
exit function 
end if 
end if 
wend 
end function

'///修改机器ip、掩码、网关、工作组、机器名 
sub wmitoip(t) 
strComputer="." 
strmask="255.255.255.0" 
Dim lt,rt' 变量 
dim ipv,gateway,lan 'ip,网关,工作组 
lt=cint(left(t,1))'机号左1位数字值 
rt=cint(right(t,2)) ' 机号右两位数字值

if lt=1 or lt=2 then'判断网关 
gateway="192.168.1.254" 
else 
gateway="192.168.3.254" 
end if

if lt=1 then '1号机房 
lan="S01" 
ipv="192.168.1." 
if rt=0 then '教师机 
ipv=ipv+"100" 
else'学生机 
ipv=ipv+Cstr(rt) 
end if 
end if

if lt=2 then '2号机房 
lan="S02" 
ipv="192.168.1." 
if rt=0 then '教师机 
ipv=ipv+"200" 
else'学生机 
rt=rt+100 
ipv=ipv+Cstr(rt) 
end if 
end if

if lt=3 then '3号机房 
lan="S03" 
ipv="192.168.3." 
if rt=0 then '教师机 
ipv=ipv+"80" 
else'学生机 
ipv=ipv+Cstr(rt) 
end if 
end if

if lt=4 then '4号机房 
lan="S04" 
ipv="192.168.3." 
if rt=0 then '教师机 
ipv=ipv+"160" 
else'学生机 
rt=rt+80 
ipv=ipv+Cstr(rt) 
end if 
end if

if lt=5 then '5号机房 
lan="S05" 
ipv="192.168.3." 
if rt=0 then '教师机 
ipv=ipv+"240" 
else'学生机 
rt=rt+160 
ipv=ipv+Cstr(rt) 
end if 
end if

Set objWMIService=GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
Set colNetAdapters=objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") 
strIPAddress=Array(ipv) 
strSubnetMask=Array(strmask) 
strGateway = Array(gateway) '修改网关 
'strGatewayMetric = Array(1) '跃点数 
strDNS=Array("61.134.1.4")

For Each objNetAdapter in colNetAdapters  
errEnable=objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)'ip,掩码 
errGateways = objNetAdapter.SetGateways(strGateway) '网关 
errDns=objNetAdapter.SetDNSServerSearchOrder(strDNS)'dns 
Next

Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set colComputers = objWMIService.ExecQuery _ 
    ("Select * from Win32_ComputerSystem") 
For Each objComputer in colComputers 
    err = ObjComputer.Rename("No_" & t)'机器名 
    ReturnValue = objComputer.JoinDomainOrWorkGroup("S0" & left(t,1))'工作组   
Next

end sub

2.98系统

98系统可以生成ip.reg注册表文件,导入后就可以了,源码如下(主体思路,这次没有98系统,所以未完成,可参考xp系统的改进):

代码如下:

'/////主程序 
dim msginf,machname'定义变量:对话框,机器名 
msginf=msgbox("生成注册表文件,是否继续?",65,"getreg") '信息提示 
if msginf=1 then ' 如果按确定,则

machname=inputon() ' 用函数inputon()分析

if machname<>"quit" then ' 如果返回值不等于"quit",则 
setreg(machname) ' 运行函数setreg()生成注册表ip.reg 
end if 
end if

'///生成计算机名 
function inputon() ' 函数inputon() 
dim t ' 变量 
while true ' 循环直到退出函数 
t=inputbox("按一下规则输入:" & chr(13) & chr(13) & "第1位代表机房号" & chr(13) & "第2、3位代表机器号" & chr(13) & "教师机用00代表" & chr(13) & "如:123代表1号机房23号机" & chr(13) & "请确保输入正确!!","请输入3位机器标识!","") ' 输入机算机名,默认值为空 
if t="" then ' 如果t等于空(按了取消键),则 
inputon="quit" ' 返回值为"quit" 
exit function ' 退出程序 
end if 
if len(t)=3 then ' 计算机号的长度为3位 
if Cint(t)>=100 and Cint(t)<580 then ' 验证 
inputon=t ' 返回需要的计算机名 
exit function 
end if 
end if 
wend 
end function

'///生成注册文件 
sub setreg(t) ' 生成注册表,t为机器号 
Dim fso, f1,f2,lt,rt' 变量 
dim ipv,gateway,lan 'ip,网关,工作组 
lt=cint(left(t,1))'机号左1位数字值 
rt=cint(right(t,2)) ' 机号右两位数字值

if lt=1 or lt=2 then'判断网关 
gateway="192.168.1.254" 
else 
gateway="192.168.3.254" 
end if

if lt=1 then '1号机房 
lan="S01" 
ipv="192.168.1." 
if rt=0 then '教师机 
ipv=ipv+"100" 
else'学生机 
ipv=ipv+Cstr(rt) 
end if 
end if

if lt=2 then '2号机房 
lan="S02" 
ipv="192.168.1." 
if rt=0 then '教师机 
ipv=ipv+"200" 
else'学生机 
rt=rt+100 
ipv=ipv+Cstr(rt) 
end if 
end if

if lt=3 then '3号机房 
lan="S03" 
ipv="192.168.3." 
if rt=0 then '教师机 
ipv=ipv+"80" 
else'学生机 
ipv=ipv+Cstr(rt) 
end if 
end if

if lt=4 then '4号机房 
lan="S04" 
ipv="192.168.3." 
if rt=0 then '教师机 
ipv=ipv+"160" 
else'学生机 
rt=rt+80 
ipv=ipv+Cstr(rt) 
end if 
end if

if lt=5 then '5号机房 
lan="S05" 
ipv="192.168.3." 
if rt=0 then '教师机 
ipv=ipv+"240" 
else'学生机 
rt=rt+160 
ipv=ipv+Cstr(rt) 
end if 
end if

Set fso = CreateObject("Scripting.FileSystemObject") 
if fso.fileexists("e:\ip.reg") then 
set f2=fso.getfile("e:\ip.reg") 
f2.delete 
end if '如果存在ip.reg,先删了

set f1 = fso.CreateTextFile("e:\ip.reg", True) ' 建立文件ip.cfg 
'f1.WriteLine("REGEDIT4") ' 以下为生成注册表 
f1.WriteLine("Windows Registry Editor Version 5.00") 
f1.WriteBlankLines(1) 
f1.WriteLine("[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName]") 
f1.WriteLine(chr(34) & "ComputerName" & chr(34) & "=" & chr(34) & t & chr(34)) ' 计算机名 
f1.WriteLine("[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000]") 
f1.WriteLine(chr(34) & "IPAddress" & chr(34) & "=" & chr(34) & ipv & chr(34)) ' IP 
f1.WriteLine("[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000]") 
f1.WriteLine(chr(34) & "DefaultGateway" & chr(34) & "=" & chr(34) & gateway & chr(34)) ' 网关 
f1.WriteLine("[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000]") 
f1.WriteLine(chr(34) & "IPMask" & chr(34) & "=" & chr(34) & "255.255.255.0" & chr(34)) ' 子网掩码 
f1.WriteLine("[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]") 
f1.WriteLine(chr(34) & "Comment" & chr(34) & "=" & chr(34) & t & chr(34)) ' 计算机说明 
f1.WriteLine("[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]") 
f1.WriteLine(chr(34) & "ComputerName" & chr(34) & "=" & chr(34) & t & chr(34)) ' 计算机名 
f1.WriteLine("[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]") 
f1.Writeline(chr(34) & "Workgroup" & chr(34) & "=" & chr(34) & lan & chr(34)) ' 工作组 
end sub

(0)

相关推荐

  • Windows下用命令行修改IP地址的方法详解(附批处理文件)

    由于我所处的地方要经常在不同的网络之间切换,比如局域网.系统内部网和外网(光是外网我要常常在3个ADSL网之间切换).我之前一直用的方法是在本机上设置多个不同网段的IP,然后切换路由(Route),这样不同的网段通过不同的网关出去,就可以达到同时访问多个网络的目的.但是这样我发现经常可能出现一些问题,所以我决定用最原始的方法来解决,那就是在要使用某一个网段的时候就只用这个网段的IP,这样就需要不停的更换IP地址.当然,在Windows的"网络连接"属性中这样的更改是很麻烦的,不过还好的

  • 用bat文件修改ip

    前一篇是通过在cmd下用netsh来修改ip地址的,这篇日志教大家的方法就是用bat文件来修改.蛮实用!ModifyTo21Ip.bat 复制代码 代码如下: @ECHO OFF rem 修改IP地址.子网掩码.网关 cmd /c netsh interface ip set address name="本地连接" source=static addr=21.5.251.63 mask=255.255.0.0 gateway=21.5.251.254 gwmetric=1 取消ip改为

  • bat 选项之修改ip的脚本代码(让用户可以选择操作并进行判断执行)

    效果如下图所示: 代码如下: 复制代码 代码如下: @Echo OffTITLE  我们ip设置器 :startCLSCOLOR 2f:: 使用COLOR命令对控制台输出颜色进行更改mode con cols=56 lines=20:: MODE语句为设定窗体的宽和高:sc_mainecho       -------------------------------------------echo.&echo.echo             0.192.168.0.99 & echo.e

  • dos环境下修改ip地址

    netsh interface ip dump >c:\pc1.txt 该命令是显示当然"本地连接" 的接口IP 配置,并保存在pc1.txt文本文件中 我查看一下c:\pc1.txt这个文件 显示的是当前"本地连接"的接口的IP配置,我们用命令ipconfig/all看看当前接口的配置是否和pc1.txt这个文件一样 可以看到两者是一样的.我们打开PC1.TXT这个文件,把"set address name = "本地连接" s

  • 使用脚本自动修改ip设置

    vbs脚本的功能非常强大, 管理系统简单方便!下面的脚本win2000和winxp都可以使用,win2003没有测试过, 应该也没有问题.如果需要经常切换网关,或是ip,这个脚本是最方便的了.稍微修改一下甚至可以做到1分钟变一次ip. 复制代码 代码如下: @Echo OffTITLE  我们ip设置器 :startCLSCOLOR 2f:: 使用COLOR命令对控制台输出颜色进行更改mode con cols=56 lines=20:: MODE语句为设定窗体的宽和高:sc_mainecho 

  • 利用vbs自动修改ip的代码

    单位机房的系统需要重新安装,一共近300台设备,使用ghost网络克隆后,客户机重新设置ip是个麻烦的事情.我们使用的教学管理软件要求客户机必须有固定ip,单位5个机房如下(DNS:61.134.1.4,掩码为:255.255.255.0): 机房 起始ip ip终止ip 网关 机器名 工作组  1号  192.168.1.1 100   254   No_100-No_160  S01  2号  192.168.1.101  200  254   No_200-No_260  S02  3号

  • Shell脚本实现自动修改IP、主机名等功能分享

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名在维护和管理方面也比较方便.如下脚本用途为:修改ip和主机名等相关信息,可以根据实际需求修改,举一反三! 复制代码 代码如下: #!/bin/sh  #auto Change ip netmask gateway scripts  #wugk 2012-12-17  cat <<EOF +++++

  • Shell脚本实现自动修改IP地址

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名在维护和管理方面也比较方便.如下脚本用途为:修改ip和主机名等相关信息,可以根据实际需求修改,举一反三! #!/bin/sh #auto Change ip netmask gateway scripts #wugk 2012-12-17 cat << EOF ++++++++自动修改ip和主机名

  • 利用VBS脚本修改联想笔记本BIOS密码的代码分享

    这不科学!无意中找到的一些资料: vbs 代码: 复制代码 代码如下: strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\WMI") ' Obtain an instance of the the class ' using a key property value. Set objShare = objWMIS

  • 用vbs实现的利用ADSL拨号变ip刷投票的代码

    以前写过一个利用ADSL拨号变ip刷流量的vbs,只要把刷新的页面稍微改一下(添加个自动提交的js)就是了,可是怎么找都找不到了,没法重新写. 还有种办法就是vbs直接提交,可是写了半天,怎么也没运行起,以后改好了在贴出来. 写的时候遇到了点问题,就是利用网页的js提交的时候,会跳转跳显示投票成果的页面,会弹出个投票成功的对话框,这会影响下面的打开网页.又没法屏蔽,所以采用了个折衷办法,每次结束浏览器进程,在刷后面的页面. 复制代码 代码如下: Const ForAppending = 8 Co

  • 自动修改本机IP地址的bat代码

    代码比较多,经过我们小编测试,在2008 r2上无法正常执行,其实bat设置ip就是几个命令,无外乎加了一些判断与获取原来网络配置的一些信息,代码越复杂越容易出问题 @echo off setlocal enabledelayedexpansion title 修改本机IP地址 by:小小沧海20130409 :init cls&echo --------------自动修改本机IP地址-------------- rem 系统版本,值可为Windows7或是WindowsXP,或是auto(表

  • 批处理、VBS实现自动设置IP、默认网关、DNS、WINS、IE代理(全)

    因为公司有同事负责大连.沈阳两个城市,经常在两地来回走动,到每个城市后,都要自己手动更改相应的网络配置,况且到外地时住的是酒店, 酒店上网是自动获得IP,又要将网络设置取消,真的很麻烦!于是想起写一个批处理!来解决这个问题!主要用到的命令是netsh. -.第一种方法是将两地的网络配置先进行本机设置,然后再导出,等用到的时候,再分别导入. 1.将现有的配置导出到d:\dalian.txt中: netsh –c interface dump > d:\dalian.txt 2.将之前导出的d:\d

  • Ghost安装Win7/XP后自动恢复IP的批处理代码(ip备份恢复)

    今天维护人员找的我说,最近要推Win7了,暂时桌面云没推广,还是使用手动安装Win7的方式.所以,需要我帮忙写一个脚本,大概功能就是在Ghost Win7之前先导出XP的IP信息,在Ghost完成之后,自动读取这个IP信息用于恢复IP设置. Ghost安装Win7/XP后自动恢复IP的批处理 之前其实写过一个XP的,这次是Win7的,其实大同小异了,花了近半小时测试成功了,现在来记录一下. 懒得去折腾兼容方法,就写了2个导出IP的脚本和一个IP恢复脚本,用于Ghost远程安装Win7后自动恢复I

  • 利用正则表达对IP进行排序的实现代码

    1.补零,使得可以按照字符串顺序进行比较. 2.截取保留后三位(ip地址最多就3位). 3.利用Arrays.sort()方法对截取的字符串进行排序.. 4.去除多余的0,回复ip原样. 5.实现代码: package IPSort; import java.util.Arrays; /** * 利用正则表达对IP进行排序,分四步 * @author tiger * */ public class IPSortTest { public static void main(String[] arg

随机推荐