2014-12-30 2 views
0

Я ноб с vbs, вот сценарий (от How to run a file on background using vbscript with launch options). Но запуск не работает.VBS run not working

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) 
+0

кажется мне, когда вы идете, чтобы запустить его, вы добавляете дополнительные кавычки в командной строке. –

ответ

2

кв.кв (SCMD) возвращается "" C: \ Program Files \ Pineapplesoft \ Затерянный компьютер \ lostcomputeraudio.bat " "1" "/ пи: па ро" "последний 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 
+0

И что я должен добавить, чтобы он работал на фоне? –

+0

http://msdn.microsoft.com/en-us/library/d5fk67ky(v=vs.84).aspx. Вы можете попробовать wshShell.Run sCmd, 0, False в соответствии с прилагаемой статьей, окно должно быть скрыто. –

-1

Вы можете запустить Cmd как этот

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

Нет, вы не можете. И даже при правильном arg для CreateObject, запуск 'cmd.exe' не имеет смысла. –