带变量的批量启动器

带变量的批量启动器

创建此批处理启动器是为了使批处理文件不会启动命令提示符窗口...现在我向其中添加了更多变量,但它不起作用了...

我正在像这样启动 VBScript;

wscript D:\batchlaunchersyntax.vbs D:\batch\batch.bat 11 D:\program files\hello world

最后两个变量会发生变化。我想通过传递一个数字和目录变量来启动批处理文件。

您能帮我编辑这个 VBScript 来实现这一点吗?

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

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

如果 oArgs.Count <>3然后

' 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)
sArg = oArgs(1)

sArg2 = oArgs(2)

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 & """" &sArg & “ “ & sArg2 & “ “,0,真)

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

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

答案1

阅读并关注语法:转义符、分隔符和引号

使用“双引号”

如果单个参数包含空格,您仍然可以通过用“引号”括起来将其作为一个项目传递 - 这对于长文件名很有效。

应用于您的情况,使用:

wscript D:\batchlaunchersyntax.vbs "D:\the batch\batch.bat" 11 "D:\program files\hello world"

否则,命令行将被标记如下:

rem     ↓ script name
wscript D:\batchlaunchersyntax.vbs D:\the batch\batch.bat 11 D:\program files\hello world
rem oArgs(0)    D:\the
rem oArgs(1)    batch\batch.bat
rem oArgs(2)    11
rem oArgs(3)    D:\program
rem oArgs(4)    files\hello
rem oArgs(5)    world

答案2

您的脚本仅接受两个参数,因此您必须更改此行以反映您想要传递给脚本的参数数量:

If oArgs.Count <> 2 Then

将 2 更改为新的限制。

第一个参数oArgs(0)是您要运行的批处理脚本的名称。

第二个参数oArgs(1)是传递给第一个参数的参数的名称。

为了传递更多参数,您必须将oArgs(2)等等分配给新变量,然后更改以下行:

oShell.Run("""" & sFilePath & """" & sArg, 0, True)

...这样就可以将更多参数传递给脚本。您可以在变量后面添加这些参数sArg,如下所示:sArg & " " & sArg2 & " " & sArg3假设您将传递的参数分配给sArg2sArg3

当然,您的批处理文件必须知道如何处理传递的参数。:-)

希望这可以帮助!

相关内容