我正在寻找一个脚本,我将在其中接受用户的输入,将其作为参数传递给命令行并显示结果。
就像是:
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")
我正在寻找一个脚本,我将在其中接受用户的输入,将其作为参数传递给命令行并显示结果。
就像是:
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")
除了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:\
.
回覆:
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
由复制粘贴地精添加)
(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
使用文档来学习如何改进我的演示片段——生产就绪版本应该做一些错误处理。
如果您不想使用.Exec
,请参阅此答案以获取使用.Run
和重定向来获取命令输出的示例代码。