我希望创建一个脚本,我将接受用户的输入,将其作为参数传递给命令行并显示结果。
类似的东西:
Dim WshShell, Return,sctask,arg
arg=inputbox("Enter the computername")
Set arg = Wscript.Arguments
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run("C:\schtasks /query /s &arg")
答案 0 :(得分:2)
除了Ekkehard.Horner所说的内容之外:你不能像简单字符串一样追加集合(WScript.Arguments
):
Set arg = Wscript.Arguments
...
WshShell.Run "C:\schtasks /query /s " & arg
您需要重新构建参数字符串,如下所示:
ReDim args(WScript.Arguments.Count-1)
For i = 0 To WScript.Arguments.Count-1
If InStr(WScript.Arguments(i), " ") > 0 Then
args(i) = Chr(34) & WScript.Arguments(i) & Chr(34)
Else
args(i) = WScript.Arguments(i)
End If
Next
WshShell.Run "C:\schtasks /query /s " & Join(args, " ")
此外,schtasks
中通常没有C:\
个可执行文件。
答案 1 :(得分:1)
回复:
WshShell.Run("C:\schtasks /query /s &arg")
(1)VBScript不插入变量,你必须连接arg
(正确)的内容:
WshShell.Run "C:\schtasks /query /s " & arg
(WRT @ Ansgar的帖子:我认为arg
拥有计算机名称(希望)由
arg=inputbox("Enter the computername")
你的下一行:
Set arg = Wscript.Arguments
由copy-& -paste-goblin添加
(2)调用sub /不接收返回值时,不得使用param list()。所以要么使用上面的行,要么
iRet = WshShell.Run("C:\schtasks /query /s " & arg)
Re:显示结果
由于.Run
只执行命令并返回状态,获得schtasks
输出的最低成本/最高增益方法为.Exec
:
Option Explicit
Dim oWSH : Set oWSH = CreateObject("WScript.Shell")
Dim sCmd : sCmd = "schtasks /Query /S winxpsp3"
Dim sRes : sRes = oWSH.Exec(sCmd).Stdout.ReadAll()
WScript.Echo sRes
使用docs了解如何改进我的演示代码段 - 生产就绪版本应该进行一些错误处理。
如果您不想使用.Exec
,请参阅this answer了解使用.Run
的示例代码并重新定向以获取命令的输出。