当前位置:编程学习 > VB >>

VB下自动读取脚本并在cmd下运行该怎样实现?

亲爱的朋友们,
    我在做课程设计的时候遇到一个关于VB下自动读取脚本并在cmd下运行该怎样实现的问题:
    我现在能在VB下生成一个叫"配置文件.txt的文本",该文本存放路径"D:\配置文件.txt",现在需要在VB下逐行调用文本下每一条命令(每一条命令已经写好配置路由器需要输入的东西),现在需要在VB下启动cmd并运行telnet,现在不知道该怎么弄了求教高手救急,后天要交课程设计的,谢谢,QQ86497089,油箱:zhaomingdan@163.com
进入cmd后启动代码如下
telnet 192.168.0.1
enable
config terminal
hostname XX
enable secret XX
enable password XX
line console 0
line vty 0 4
login
password XX
exit
vlan database
vlan 2
no vlan 2
int f0/1
switchport access vlan 2
switchport mode trunk
switchport trunk allowed vlan 1,2
#switchport trunk encap dot1q
vtp domain 
vtp password XX
vtp mode server XX
vtp mode client XX
nterface vlan 1
ip address 192.168.0.1
ip default-gateway 255.255.255.0
dir flash
exit


QQ86497089,油箱:zhaomingdan@163.com谁能解决本人万分感谢!!!! --------------------编程问答-------------------- 移动该文件到TEMP目录改名为.BAT
SHELL该BAT --------------------编程问答-------------------- 不会那个,能写下具体代码么 --------------------编程问答-------------------- 您有QQ么?加我好友,86497089 --------------------编程问答-------------------- 我要代码!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!求救急用啊 --------------------编程问答-------------------- 将你的脚本内容保存为D:\配置文件.BAT(格式仍然是文本,只是把代码里面的扩展名改掉)
调用时用如下代码:
shell "cmd d:\配置文件.bat"
如果需要隐藏该DOS窗口,则
shell "cmd d:\配置文件.bat",vbhide
如果需要运行后自动退出(可省略你脚本中最后的exit)则

shell "cmd /c d:\配置文件.bat",vbhide


我没看明白你的脚本,中间有一个exit,中间退出了?那后面的语句怎么执行???如果脚本中第一个exit后面的还是要执行的,那么你应该把第一个exit前后的语句分成2个脚本来存储,然后再去调用,当然了,如果是顺序执行的,还需要运行SHELL等待...
以前改的一个SHELL等待,你可以将脚本分别保存为d:\1.bat 和d:\2.bat(我总觉得直接保存在磁盘根下不太好),然后测试如下代码:
'等待需要API
Private Const INFINITE = -1&
Private Const SYNCHRONIZE = &H100000
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
'获取时间差需要API
Private Declare Function GetTickCount Lib "kernel32" () As Long


Private Sub Form_Click()
'Shell "explorer http://www.dyjmgm.com/110/vote.asp", vbNormalFocus
If MsgBox("所调用脚本已经结束,该程序一共运行了:" & mWait(Shell("cmd /c d:\1.bat", vbHide)) & "毫秒", vbOKOnly) = vbOK Then MsgBox "所调用脚本已经结束,该程序一共运行了:" & mWait(Shell("cmd /c d:\2.bat", vbHide)) & "毫秒", vbOKOnly ' Shell 函数返回值为 Process Id ,当关闭以后,就会弹出对话框


'如果不需要弹出对话框提示运行时间,可将上行注释掉,而后将下面2行恢复
'mWait (Shell("cmd /c d:\1.bat", vbHide)) & "毫秒"
'mWait (Shell("cmd /c d:\2.bat", vbHide)) & "毫秒"

End Sub
'自定义等待函数,传入SHELL返回值就可以了,返回值为经过的时间
Public Function mWait(ByVal mPid As Long) As Long
Dim mTime As Long
mTime = GetTickCount
Dim pHnd As Long ' Process Handle
pHnd = OpenProcess(SYNCHRONIZE, 0, mPid) ' 取得 Process Handle
If pHnd <> 0 Then
Call WaitForSingleObject(pHnd, INFINITE) ' 无限等待,直到程序结束
Call CloseHandle(pHnd) '释放句柄资源
End If
mWait = GetTickCount - mTime
End Function
当然了,你可以把时间检测部分去掉,我当时只是写一个演示....时间是不必要的
--------------------编程问答-------------------- 谢谢楼上的大哥,我赶紧去测试一下,天都快亮了,真是把我急死了,呵呵,你要是在的话别走哈,留个QQ或者油箱什么的,我好联系你,方便的话回头请你吃饭,我是北京的 --------------------编程问答-------------------- 大哥,,,不用吃饭了...呵呵..............代码我写的时候是用计算器测试的,VB6+SP6 XP环境通过...QQ:47493585最近基本不上,太忙,在带毕业班...这不,马上高考了
补充:VB ,  网络编程
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,