VBScript命令行难题?



我有一个HTA,我可以将IP(用户在HTML文本框中输入txtIP.value)传递给供应商的管理软件-所有这些都可以工作。然而,有时设备不会响应GUI请求,但会响应ping请求。我有一个非常好的ping命令,我使用它传递ping命令返回到另一个cmd,它改变提示以显示每个回复的时间,这允许我观看多个设备并协调丢失或高ping。我无论如何也不能把这个命令传递到命令行。任何和所有的帮助都是感激的。

'********************************************************************
'Trying to run the following command:
'* ping -t 172.17.100.33|cmd /q /v /c "(pause&pause)>nul & for /l %a in () do (set /p "data=" && echo(!time! !data!)&ping -n 2 localhost>nul"
'********************************************************************
Sub TimedPing
'Set the HTML Field value - for testing purposes
txtIP.value = "172.17.100.33"
strIP1 = "ping -t " 
strIP2 = txtIP.value
strIP3 = "|cmd /q /v /c "
strIP4 = """(pause&pause)>nul & "
strIP5 = "for /l %a in ()"
strIP6 = "do (set /p "
strIP7 = " ""data="" && echo(!time! !data!)&ping -n 2 localhost>nul"""
Set objShell = CreateObject ("WScript.Shell")
MsgBox("Step 1: " & strIP1 & strIP2 & strIP3 & strIP4 & strIP5 & strIP6 & strIP7)
txtCmd1.value = strIP1 & strIP2 & strIP3 & strIP4 & strIP5 & strIP6 & strIP7  
objShell.Run strIP1 & strIP2 & strIP3 & strIP4 & strIP5 & strIP6 & strIP7
MsgBox("Step 2: " & "ping -t 172.17.100.33|cmd /q /v /c ""(pause&pause)>nul & for /l %a in () do (set /p ""data="" && echo(!time! !data!)&ping -n 2 localhost>nul""")
txtCmd2.value = "ping -t 172.17.100.33|cmd /q /v /c ""(pause&pause)>nul & for /l %a in () do (set /p ""data="" && echo(!time! !data!)&ping -n 2 localhost>nul"""
objShell.Run "ping -t 172.17.100.33|cmd /q /v /c ""(pause&pause)>nul & for /l %a in () do (set /p ""data="" && echo(!time! !data!)&ping -n 2 localhost>nul"""
MsgBox("Step 3: " & strIP1 & strIP2)
objShell.Run strIP1 & strIP2
MsgBox("Step 4: CMD")
objShell.Run "cmd"
End Sub

步骤1编译(HTA刷新时没有错误消息)并运行时没有可见的错误。DOS屏幕立即打开和关闭,没有显示任何东西。我试过在那里暂停一下,但它也不起作用。

步骤2做同样的事情。

步骤3没问题。

步骤4没问题。

我转储了我发送给objShell的值。运行命令分隔文本框,以比较它们与原始文本框的匹配情况。在获得与原始命令相同的结果之后,我可以从HTA复制文本并在命令窗口中运行它,在第一步和第二步中都不会出错,但是我只从run命令中得到一个快速关闭的命令窗口。什么好主意吗?

也许有一天,有人会找到答案。在此之前,我可以执行这个命令的唯一方法是使用一个bat文件(经过几个小时的努力,我得到了这个工作与可变的IP地址和颜色在几个小时)。有趣的是,就像Geert Bellekens提到的,我必须用一些其他命令(我使用@echo off)启动bat文件,然后我必须在命令本身的百分号上加倍。为了完整起见,下面是运行调用bat文件的代码,传递一些变量(IP地址和颜色主题),然后运行bat文件。仅供参考,我使用If-Then-Else语句来检查用户选择的主题,并且VBS脚本中的第二个变量根据他们选择的颜色进行更改。我将显示默认值。

VBScript在HTA触发的HTML按钮点击。

Sub TimedPing
Set objShell = CreateObject ("WScript.Shell")
objShell.Run "TimedPing.bat " & txtIP.value & " " & 07
End Sub

与HTA保存在同一目录下的Bat文件:

@echo off
title Timed Ping
color %2
@ping -t %1|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p "data=" && echo(!time! !data!)&ping -n 2 localhost>nul"

相关内容

  • 没有找到相关文章

最新更新