VBS 运行不工作

Posted

技术标签:

【中文标题】VBS 运行不工作【英文标题】:VBS run not working 【发布时间】:2014-12-30 13:11:16 【问题描述】:

我是 vbs 的菜鸟,这是一个脚本(来自 How to run a file on background using vbscript with launch options)。但是运行不起作用。

Option Explicit
Dim wshShell
Set WshShell = CreateObject("WScript.Shell")

Function qq(s) : qq = """" & s & """" : End Function

Sub mapF(a, f)
  Dim i
  For i = LBound(a) To UBound(a)
      a(i) = f(a(i))
  Next
End Sub

Dim sFSpec : sFSpec = "C:\Program Files\Pineapplesoft\Lost computer\lostcomputeraudio.bat"
Dim aParms : aParms = Split("1#/pi:pa po#last parm", "#")
mapF aParms, GetRef("qq")

Dim sCmd : sCmd = Join(Array( _
    qq(sFSpec) _
  , Join(aParms) _
))

WshShell.Run qq(sCmd)

【问题讨论】:

当你运行它时,我认为你正在向命令行添加额外的引号。 【参考方案1】:

qq(sCmd) 正在返回这个:

""C:\Program Files\Pineapplesoft\Lost computer\lostcomputeraudio.bat" "1" "/pi:pa po" "last parm""

你想要:

"C:\Program Files\Pineapplesoft\Lost computer\lostcomputeraudio.bat" "1" "/pi:pa po" "last parm"

删除qq(sCmd) 函数,它应该可以工作。

Option Explicit
Dim wshShell
Set WshShell = CreateObject("WScript.Shell")

Function qq(s) : qq = """" & s & """" : End Function

Sub mapF(a, f)
  Dim i
  For i = LBound(a) To UBound(a)
      a(i) = f(a(i))
  Next
End Sub

Dim sFSpec : sFSpec = "C:\Program Files\Pineapplesoft\Lost computer\lostcomputeraudio.bat"
Dim aParms : aParms = Split("1#/pi:pa po#last parm", "#")
mapF aParms, GetRef("qq")

Dim sCmd : sCmd = Join(Array( _
    qq(sFSpec) _
  , Join(aParms) _
))

wshShell.Run sCmd

【讨论】:

我应该添加什么让它在后台运行? msdn.microsoft.com/en-us/library/d5fk67ky(v=vs.84).aspx。你可以试试 wshShell.Run sCmd, 0, False 根据附件文章应该隐藏窗口。【参考方案2】:

你可以这样运行Cmd

Set shell=CreateObject
Shell.Run("cmd.exe")

【讨论】:

不,你不能。即使对 CreateObject 使用正确的参数,运行 cmd.exe 也没有任何意义。

以上是关于VBS 运行不工作的主要内容,如果未能解决你的问题,请参考以下文章

Windows 2008 server R2激活客户端停止工作

iexpress 提取文件,然后从 exe 中运行 vbs 引用文件

VBS脚本运行批处理文件,不在启动时运行[重复]

调用 vbs 的批处理文件不会从任务调度程序运行

VBS读取txt文档数据查找Excel中单元格数据符合条件的剪切到工作表2中

VBS 脚本在 Access 数据库中不起作用