| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 692 人关注过本帖
标题:关于IP地址和输出问题求助
只看楼主 加入收藏
lizhijun3648
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
关于IP地址和输出问题求助
设备需要借助VBS和超级终端烧写固件。
用到命令:setenv serverip 192.168.1.22    设置TFTP服务器地址,也就是电脑地址
           setenv ipaddr 192.168.1.33    设置要烧写固件的设备地址,程序就是从电脑下载到设备
            ping 192.168.1.22            查看设备和电脑之间网络是否畅通
本来用着挺好,电脑设置静态IP地址,但是老是IP地址冲突,只好自动获取IP地址.
自动获取ip地址就出问题了,每变更一次IP地址,我就就修改VBS文件。
所以请高手帮忙给编段代码,可以自动判断当前电脑IP地址,并将设备IP设置在同一网段。
谢谢!
谢谢!
搜索更多相关主题的帖子: 电脑下载 IP地址 ip地址 服务器 
2013-07-25 17:16
lizhijun3648
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-21
收藏
得分:0 
Set WshShell = CreateObject("WScript.Shell")  
Dim CloseTime,i  
CloseTime = 3
For i = CloseTime To 1 Step - 1  
    WshShell.popup "当前时间为" & i,1,"计时",0
    Wscript.Sleep 1000  
next
'上段命令,开启后倒计时,时间为closetime的值。默认为零,不弹出倒计时窗口。'





dim ta,shell,j,showtime
showtime =1
'定义变量,赋值。 j,showtime,变量用于下面的提示框弹出函数。
set shell=wscript.createobject("wscript.shell")







shell.appactivate"115200"
shell.SendKeys "setenv serverip 192.168.1.224"
WScript.Sleep 400

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 600

shell.appactivate"115200"
shell.SendKeys "setenv ipaddr 192.168.1.225"
WScript.Sleep 500

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 600



shell.appactivate"115200"
shell.SendKeys "save"
WScript.Sleep 200

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 200

shell.appactivate"115200"
shell.SendKeys"protect off all"
WScript.Sleep 300

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 4600


shell.appactivate"115200"
shell.SendKeys"erase all"
WScript.Sleep 200

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 10000

shell.appactivate"115200"
MSGBOX("请务必在擦除完成后再点击确定")
shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 200

WScript.Sleep 500
shell.appactivate"115200"
shell.SendKeys "tftp 0x80000000 6004-sz.bin"
WScript.Sleep 100

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 5000

shell.appactivate"115200"
MSGBOX("请务必在写完后再点击确定")
WScript.Sleep 200

shell.appactivate"115200"
shell.SendKeys "re"
WScript.Sleep 200

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 1000
这是我现在使用的VBS文件,请高手帮忙处理下,非常感谢!
2013-07-25 17:18
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4943
专家分:30047
注 册:2008-10-15
收藏
得分:0 
http://

另外:可以使用 find 在输出结果里进行初步过滤。因为 ipconfig 的输出结果在 XP和 WIN7下同,所以无法给出正确的示例的结果。
ipconfig |find "IP"

WIN7下面得到的是:
Windows IP 配置
   本地链接 IPv6 地址. . . . . . . . : fe80::2960:77e:1e7c:a8c6%12
   IPv4 地址 . . . . . . . . . . . . : 10.92.29.58

然后这个结果放到一个变量里,然后到这个变量里进行 截取。最终取得本地的IP地址。

授人于鱼,不如授人于渔
早已停用QQ了
2013-07-25 17:40
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:20 
你每次修改vbs文件的哪一部分?举个修改的例子就好做程序了。
2013-07-25 22:21
lizhijun3648
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-21
收藏
得分:0 
需要修改的地方就是IP地址
shell.appactivate"115200"
shell.SendKeys "setenv serverip 192.168.1.224"
WScript.Sleep 400

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 600

shell.appactivate"115200"
shell.SendKeys "setenv ipaddr 192.168.1.225"
WScript.Sleep 500

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 600

如果我换网段了,比如换成192.168.0.1网段了,上面需要改的地方就是192.168.0.225和192.168.0.224
2013-07-26 13:11
lizhijun3648
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-21
收藏
得分:0 
这个VBS不是我写的,我不懂VBS啊,麻烦高手帮我搞定啊,谢谢
2013-07-26 13:12
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:0 
这样就比较好理解了,vbs是可以获取本机ip地址的,对这段代码增加即修改如下(没有调试环境,不能保证正确)
Set WshShell = CreateObject("WScript.Shell")  
Dim CloseTime,i  
CloseTime = 3
For i = CloseTime To 1 Step - 1  
    WshShell.popup "当前时间为" & i,1,"计时",0
    Wscript.Sleep 1000  
next
'上段命令,开启后倒计时,时间为closetime的值。默认为零,不弹出倒计时窗口。'





dim ta,shell,j,showtime,ip()
showtime =1
'定义变量,赋值。 j,showtime,变量用于下面的提示框弹出函数。

'此处为增加的代码,
Dim objWMIService,colItems,objItem,objAddress
Set objWMIService = GetObject("winmgmts://" & ComputerName & "/root/cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For Each objItem in colItems
 For Each objAddress in objItem.IPAddress
  If objAddress <> "" then  Exit For
 End If  
 Next
 Exit For
Next
If objAddress="" then
  msgbox "没有网卡,终止执行"
  wscript.quit
endif
ip=split(objAddress,".")
'已经获取本机ip地址放到数组ip(0)至ip(3)中

set shell=wscript.createobject("wscript.shell")

shell.appactivate"115200"
shell.SendKeys "setenv serverip " & ip(0) & "." & ip(1) & "." & ip(2) & ".224"
WScript.Sleep 400

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 600

shell.appactivate"115200"
shell.SendKeys "setenv ipaddr " & ip(0) & "." & ip(1) & "." & ip(2) & ".225"
WScript.Sleep 500

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 600



shell.appactivate"115200"
shell.SendKeys "save"
WScript.Sleep 200

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 200

shell.appactivate"115200"
shell.SendKeys"protect off all"
WScript.Sleep 300

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 4600


shell.appactivate"115200"
shell.SendKeys"erase all"
WScript.Sleep 200

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 10000

shell.appactivate"115200"
MSGBOX("请务必在擦除完成后再点击确定")
shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 200

WScript.Sleep 500
shell.appactivate"115200"
shell.SendKeys "tftp 0x80000000 6004-sz.bin"
WScript.Sleep 100

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 5000

shell.appactivate"115200"
MSGBOX("请务必在写完后再点击确定")
WScript.Sleep 200

shell.appactivate"115200"
shell.SendKeys "re"
WScript.Sleep 200

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 1000
2013-07-26 17:39
lizhijun3648
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-21
收藏
得分:0 
哇……你太帅了!!!
再来点修改,应该是我没表达清楚的原因。
不是设置了3个数组获取电脑的IP地址吗,你再增加一个数组,把那个224 去掉。那个192.168.0.224不是固定的,意思就是VBS文件在哪个电脑上运行,它就获取电脑的IP地址放在这一句上:“ shell.SendKeys "setenv serverip 192.168.1.224" ”。

例1:电脑A上运行VBS文件,A电脑的IP地址是:192.168.1.101,那么 那段代码就是:

shell.appactivate"115200"
shell.SendKeys "setenv serverip 192.168.1.101"
WScript.Sleep 400

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 600

shell.appactivate"115200"
shell.SendKeys "setenv ipaddr 192.168.1.(非101的值)"
WScript.Sleep 500

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 600

shell.appactivate"115200"
shell.SendKeys "ping 192.168.1.101"
WScript.Sleep 300

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 200

例2:电脑B上运行VBS文件,B电脑的IP地址是:10.52.1.22,那么 那段代码就是:

shell.appactivate"115200"
shell.SendKeys "setenv serverip 10.52.1.22"
WScript.Sleep 400

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 600

shell.appactivate"115200"
shell.SendKeys "setenv ipaddr 10.52.1.(非22的值)"
WScript.Sleep 500

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 600

shell.appactivate"115200"
shell.SendKeys "ping 10.52.1.22"
WScript.Sleep 300

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 200

麻烦版主lowxiong大人有时间的时候再帮我修改写,谢谢,哈哈!


2013-07-26 18:52
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:0 
'该段代码已经可以正常执行,应该能完成你的要求
'如果本机地址是192.168.1.106,则外设地址会自动计算为192.168.1.108,外设最后一个数字是在本机ip地址最后一个数字基础上加2,以确保不同

Set WshShell = CreateObject("WScript.Shell")  
Dim CloseTime,i  
CloseTime = 3
For i = CloseTime To 1 Step - 1  
    WshShell.popup "当前时间为" & i,1,"计时",0
    Wscript.Sleep 1000  
next
'上段命令,开启后倒计时,时间为closetime的值。默认为零,不弹出倒计时窗口。'

'此处为增加的代码,***************************************************************************
Dim objWMIService,colItems,objItem,objAddress,ip
Set objWMIService = GetObject("winmgmts://./root/cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For Each objItem in colItems
 For Each objAddress in objItem.IPAddress
  If objAddress <> "" then  Exit For
 Next
Next
If objAddress="" then
  msgbox "没有网卡,终止执行"
  wscript.quit
end if
ip=split(objAddress,".")
'已经获取本机ip地址放到数组ip(0)至ip(3)中,该段代码已得到验证******************************************

dim ta,shell,j,showtime
showtime =1
'定义变量,赋值。 j,showtime,变量用于下面的提示框弹出函数。
set shell=wscript.createobject("wscript.shell")
shell.appactivate"115200"
shell.SendKeys "setenv serverip " & objAddress
WScript.Sleep 400

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 600

shell.appactivate"115200"
shell.SendKeys "setenv ipaddr " & ip(0) & "." & ip(1) & "." & ip(2) & "." & (ip(3)+2)
WScript.Sleep 500

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 600

shell.appactivate"115200"
shell.SendKeys "save"
WScript.Sleep 200

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 200

shell.appactivate"115200"
shell.SendKeys"protect off all"
WScript.Sleep 300

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 4600


shell.appactivate"115200"
shell.SendKeys"erase all"
WScript.Sleep 200

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 10000

shell.appactivate"115200"
MSGBOX("请务必在擦除完成后再点击确定")
shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 200

WScript.Sleep 500
shell.appactivate"115200"
shell.SendKeys "tftp 0x80000000 6004-sz.bin"
WScript.Sleep 100

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 5000

shell.appactivate"115200"
MSGBOX("请务必在写完后再点击确定")
WScript.Sleep 200

shell.appactivate"115200"
shell.SendKeys "re"
WScript.Sleep 200

shell.appactivate"115200"
shell.SendKeys "{ENTER}"
WScript.Sleep 1000
2013-07-26 22:41
lizhijun3648
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-21
收藏
得分:0 


太棒了!哈哈……非常非常的好,正是我想要的。太感谢你了!
2013-07-27 14:47
快速回复:关于IP地址和输出问题求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026143 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved