![带变量的批量启动器](https://linux22.com/image/1399227/%E5%B8%A6%E5%8F%98%E9%87%8F%E7%9A%84%E6%89%B9%E9%87%8F%E5%90%AF%E5%8A%A8%E5%99%A8.png)
创建此批处理启动器是为了使批处理文件不会启动命令提示符窗口...现在我向其中添加了更多变量,但它不起作用了...
我正在像这样启动 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
假设您将传递的参数分配给sArg2
和sArg3
当然,您的批处理文件必须知道如何处理传递的参数。:-)
希望这可以帮助!