首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在后台启动文件时,如何使这个vbs脚本接受参数?

在后台启动文件时,如何使这个vbs脚本接受参数?
EN

Stack Overflow用户
提问于 2021-10-11 16:13:06
回答 2查看 490关注 0票数 1

在一个名为“Launch.vbs”的VBS文件中有以下内容:

代码语言:javascript
运行
复制
CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False

我可以从这样的批处理文件中调用它:

代码语言:javascript
运行
复制
wscript.exe "Launch.vbs" "ProgramIWantToStartInBackground.exe"

但是,这不允许我将参数传递给它,例如:

代码语言:javascript
运行
复制
wscript.exe "Launch.vbs" "ProgramIWantToStartInBackground.exe" "Parameter"
wscript.exe "Launch.vbs" "ProgramIWantToStartInBackground.exe" Parameter

在上述两个示例中,程序都是在后台启动的,但没有接收到任何给定的参数。

如何修改vbscript代码以允许参数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-11 16:32:24

解决这个问题的方法很多,但归根结底是理解程序如何从命令提示符中运行。

launch.vbs中的这一行将对任何以双引号传递的命令进行包装,这对只对可执行文件很好,但在传递参数时会引起问题,因为只有可执行路径应该被包装在双引号中,以避免路径中任何空格的问题。

代码语言:javascript
运行
复制
CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False

相反,你有两个选择。

  1. 将两个参数传递给launch.vbs,并且只将第一个参数用双引号包装。

CreateObject("Wscript.Shell").Run“”& WScript.Arguments(0) &“”& WScript.Arguments(1),0,False

解除使用;

wscript.exe "Launch.vbs“"ProgramIWantToStartInBackground.exe”参数

执行为;

"ProgramIWantToStartInBackground“参数

  1. 移除包装并应用于传入的参数。

CreateObject("Wscript.Shell").Run WScript.Arguments(0),0,False

执行使用;

wscript.exe "Launch.vbs“ProgramIWantToStartInBackground.exe”参数

执行为;

"ProgramIWantToStartInBackground“参数

票数 1
EN

Stack Overflow用户

发布于 2022-11-08 02:25:37

下面是处理所有可能的参数的另一个版本。

代码语言:javascript
运行
复制
Dim strRun
strRun = ""
For Each strArg in WScript.Arguments
    strRun = strRun & """" & strArg & """ " 
Next
CreateObject("Wscript.Shell").Run strRun, 0, False

把它称为wscript.exe Launch.vbs ProgramIWantToStartInBackground.exe Parameter1 Parameter 2 ... ParameterN

如果参数或路径中有空间,就像往常一样用""包装它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69529378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档