0910_vbs整理

问题:要求用脚本完成一个ping通文件所有逐行IP地址,并将结果输出到新的文件中。

版本一:(exec——不显示在cmd页面上,后台操作)

    Set WshShell = WScript.CreateObject("WScript.Shell")
    Set pingShell = WshShell.exec ("cmd /c ping 192.168.1.105")
    intState = pingShell.StdOut.ReadAll()
    msgbox intState

版本二:(run——可选择后台操作或显示方式)

'引自其它博客
Const conErr = -2
Function Ping(ByVal Server)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'过程说明:
' 1)   原型 Ping(ByVal 服务器)
' 2)    ErrLevel返回值:
'
'    |值          |标志        |描述
'     -1          True         网络畅通
'      0          False        网络有误
'     -2          conErr       网址为空
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim WshShell, intState, Args
    If IsEmpty(Server) Then
        Ping = conErr : Exit Function
    End If
    Args = " -n 2"
    Set WshShell = WScript.CreateObject("WScript.Shell")
    intState = WshShell.run ("ping.exe " & Server & Args, 4, True)
    If intState = 0 Then
        Ping = True
    Else
        Ping = False
    End If
    Set WshShell = Nothing
End Function

以上两个版本其实很简单,区别就是(其它都是vbs调用函数之类的问题,这里就不赘述了)

WshShell.run ("ping.exe " & Server & Args, 4, True)
WshShell.exec ("cmd /c ping 192.168.1.105")
那么可以看到run与exec显然是有差别的,参数个数的问题,详细介绍:

参阅http://www.jb51.net/article/17327.htm

参阅http://demon.tw/programming/vbs-run-and-exec.html

run调用:

参阅http://blog.csdn.net/xiao_cs/article/details/6262144

零碎小问题整理:

1. 打开方式原来有大窍门:用cmd打开那么cmd就默认路径在当前路径下,然后ping命令就不能用了。要不然就是用ping.exe;如果使用WSH打开,那么一切都不是问题。当然这时候输出文件的路径就在系统路径下了,也就是c://windows/system32之类的。

2. windows cmd是可以使用命令将当前指令的结果输出到文件中而不是屏幕上(linux中管道里面常用),指令如下:

ping 192.168.1.105 > info.txt

那么结合使用,就可以达到很多想象中的效果啦。

最后,发一个成品吧!

'引用函数
Const conErr = -2
Function Ping(ByVal Server)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'过程说明:
' 1)   原型 Ping(ByVal 服务器)
' 2)    ErrLevel返回值:
'
'    |值          |标志        |描述
'     -1          True         网络畅通
'      0          False        网络有误
'     -2          conErr       网址为空
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim WshShell, intState, Args
    If IsEmpty(Server) Then
        Ping = conErr : Exit Function
    End If
    Args = " -n 2"
    Set WshShell = WScript.CreateObject("WScript.Shell")
    intState = WshShell.run ("ping.exe " & Server & Args, 4, True)
    If intState = 0 Then
        Ping = True
    Else
        Ping = False
    End If
    Set WshShell = Nothing
End Function

dim objFSO,objFile,strline  
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("in.txt", 1)
Currentdate=year(Now)&"-"&Month(Now)&"-"&day(Now)
Set writ = objFSO.OpenTextFile("log-"& Currentdate &".txt", 2, true)
do  until objFile.atendofstream
	Strline=objFile.readline
	x = Ping(Strline)
	'msgbox Strline & " " & x
	writ.writeline(Strline & " " & x)
loop  
objFile.close
writ.close
set objFSO=nothing

enjoy!


你可能感兴趣的:(cmd,脚本,vbs)