尝试使用vbscript运行带有参数的批处理文件

时间:2013-11-07 16:02:37

标签: vbscript

我目前正在使用vbscript执行批处理文件,只是在每次运行批处理时隐藏cmd窗口弹出。

我现在要完成的是将参数传递给该批处理文件。 vbs与wscript "c:\batchlauncher.vbs" "c:\batch.bat"一起运行。我正在寻找类似的事情; wscript "c:\batchlauncher.vbs" "c:\batch.bat" ["batch.argument"]以任何顺序或语法完成我需要的任务。

这就是我所拥有的:

batchlauncher.vbs

'--------------------8<----------------------
sTitle = "Batch launcher"

Set oArgs = WScript.Arguments
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oShell = CreateObject("WScript.Shell")

If oArgs.Count <> 1 Then
' Will die after 10 seconds if no one is pressing the OK button
oShell.Popup "Error: You need to supply a file path " _
& "as input parameter!", 10, sTitle, vbCritical + vbSystemModal

Wscript.Quit 1
End If

sFilePath = oArgs(0)

If Not oFSO.FileExists(sFilePath) Then
' Will die after 10 seconds if no one is pressing the OK button
oShell.Popup "Error: Batch file not found", _
10, sTitle, vbCritical + vbSystemModal

Wscript.Quit 1
End If

' add quotes around the path in case of spaces
iRC = oShell.Run("""" & sFilePath & """", 0, True)

' Return with the same errorlevel as the batch file had
Wscript.Quit iRC

'--------------------8<----------------------

1 个答案:

答案 0 :(得分:2)

您将参数传递给批处理文件的位置是什么?您需要从vbs内部执行此操作。 .vbs获取的任何“额外”参数都将位于oArgs数组中。将两个参数放入.vbs文件时,需要将第二组参数传递给oShell.Run命令行。

所以我改变了这一行 If oArgs.Count <> 1 Then
到这个 If oArgs.Count <> 2 Then

然后说
sFilePath = oArgs(0)
sArg = oArgs(1)

然后
iRC = oShell.Run("""" & sFilePath & """" & sArg, 0, True)