从cmd提示符运行命令,并使用vbscript捕获文本文件中的数据

从cmd提示符运行命令,并使用vbscript捕获文本文件中的数据,vbscript,command-prompt,Vbscript,Command Prompt,我正在尝试使用vbscript从命令提示符运行以下命令,然后将结果捕获到文本文件中 netstat-an-ptcp | find/c:80>c:\Users\Swarnabha\Desktop\test.txt 我已经写了下面的代码,但它不工作。。。请帮帮我 Dim filepath filepath= "C:\Users\Swarnabha\Desktop\test.txt" Dim connstr Dim portno portno = ":80" connstr = "cmd net

我正在尝试使用vbscript从命令提示符运行以下命令,然后将结果捕获到文本文件中

netstat-an-ptcp | find/c:80>c:\Users\Swarnabha\Desktop\test.txt

我已经写了下面的代码,但它不工作。。。请帮帮我

Dim filepath
filepath= "C:\Users\Swarnabha\Desktop\test.txt"


Dim connstr
Dim portno

portno = ":80"
connstr = "cmd netstat -an -p tcp | find /c "& portno &" > "& filepath

Dim oShell
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run connstr

Set oShell = Nothing

WScript.Quit

我认为您需要做的是编辑connstr以包含/c开关,该开关执行字符串指定的命令,然后终止。您需要这样做,因为您正在指定>重定向命令,该命令“是shell的一个特性”,以引用billstewart

connstr = "cmd.exe /c netstat -an -p tcp | find /c "& chr(34) & portno & chr(34) & " > " & filepath
您还需要在引号中输入端口号变量。34是双引号的ANSI代码。这样,您的命令将如下所示

cmd.exe /c netstat -an -p tcp | find /c ":80" > "C:\Users\Swarnabha\Desktop\test.txt"

<>我将考虑将所有变量声明分组,因为这是一个很好的编码实践。您还应该引用您的
文件路径
,因为它可能在某些点上也包含空格

感谢@Matt的建议,但当我运行脚本时,test.txt文件中没有捕获任何数据…:(仅供参考,我的目标是获取“:80”的计数文本文件中的连接。我的文本文件中的命令也没有得到任何返回。只需尝试管道
netstat-an-p tcp
之前的部分,以确认文本文件正在填充。运行命令时是否在屏幕上显示输出?请查看我的更新答案。您需要将变量封装在引号中,以便命令正确执行。请原谅我的错误。我总是提到这是导致您可能正在使用的错误或类似错误的原因。