Set sh = CreateObject("Wscript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim counter, myNum, fileLine
myNum = 0
counter = 9000000
Do While myNum < counter
myNum = myNum + 1
Call GetConnections()
Loop
Function GetConnections()
i = 0
outFile = "netband_logger_vbs.tmp"
Set objFile = objFSO.CreateTextFile(outFile, True)
Set shExec = sh.Exec("netstat -e")
Do While Not shExec.StdOut.AtEndOfStream
fileLine = shExec.StdOut.ReadLine()
objFile.Write fileLine & vbCrLf
objFile.Close
Loop
End Function
我上面有VBScript。我想要做的是运行netstat -e
命令9000000次并逐行将每行输出写入文本文件。每次第一轮执行结束后,脚本都应该使用新一轮执行中的值覆盖netband_logger_vbs.tmp
文件的先前内容。
目前我有两个问题:我似乎无法将整个输出写入我的.tmp文件,而且我还面临一个未设置的&#34;对象变量&#34;错误。
答案 0 :(得分:1)
您获得的错误可能是因为您在第一次迭代后关闭了文件句柄。要解决此问题,请在循环后移动行objFile.Close
。
话虽如此,我建议不要在这里使用Exec
方法。在您的场景中,外壳到CMD并使用输出重定向要容易得多:
sh.Run "%COMSPEC% /c netstat -e >""" & outFile & """", 0, True
答案 1 :(得分:0)
至于为什么你不能将所有输出都放到一个文件中; FAT32文件系统有4GB的上限,如果你正在编写很多小的.tmp文件,那就有一个目录上限。
并防止文件在StdOut
流移动objFile.Close
到Loop