在后台启动文件时,如何使此 vbs 脚本接受参数?
Posted
技术标签:
【中文标题】在后台启动文件时,如何使此 vbs 脚本接受参数?【英文标题】:How do I make this vbs script accept parameters when launching a file in the background? 【发布时间】:2021-11-30 09:23:56 【问题描述】:我在名为“Launch.vbs”的 VBS 文件中有以下内容:
CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False
我可以像这样从批处理文件中调用它:
wscript.exe "Launch.vbs" "ProgramIWantToStartInBackground.exe"
但是,这不允许我向它传递参数,例如:
wscript.exe "Launch.vbs" "ProgramIWantToStartInBackground.exe" "Parameter"
wscript.exe "Launch.vbs" "ProgramIWantToStartInBackground.exe" Parameter
在上述两个例子中,程序确实在后台启动,但没有接收到任何给定的参数。
如何修改 vbscript 代码以允许参数?
【问题讨论】:
试试wscript.exe "Launch.vbs" "ProgramIWantToStartInBackground.exe Parameter"
,你只会将一个参数传递给launch.vbs
脚本。您可以传递两个并调整 launch.vbs
脚本,但这应该也可以正常工作,而无需调整它。
如果我这样做@user692942,它会回复The system cannot find the file specified
。我应该如何调整 launch.vbs 脚本?抱歉,我主要使用 powershell,所以 vbscript 世界对我来说是陌生的。
解决这个问题的最简单方法是您想要运行并从那里开始的程序的纯命令行版本。您可能会遇到带有空格的路径等问题。这完全取决于您尝试运行的原始命令(带参数)是什么。基本上,如果您尝试在没有 VBScript 的情况下从命令行运行 ProgramIWantToStartInBackground.exe Parameter
是否有效,请不要认为 VBScript 是问题所在。
我认为问题在于您的启动脚本中的"""" & WScript.Arguments(0) & """"
实际上是您要求它运行"ProgramIWantToStartInBackground.exe Parameter"
而它应该是"ProgramIWantToStartInBackground" Parameter
。
【参考方案1】:
有很多方法可以解决这个问题,但归结为了解程序如何从命令提示符运行。
launch.vbs
中的这一行将包含以双引号传递的任何命令,这仅适用于可执行文件,但在传递参数时会导致问题,因为只有可执行文件路径应包含在双引号中以避免出现问题包含路径中可能存在的任何空格。
CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False
相反,您有两个选择。
将两个参数传递给launch.vbs
,并且只将第一个参数用双引号括起来。
CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """ " &
WScript.Arguments(1), 0, False
执行使用;
wscript.exe "Launch.vbs" "ProgramIWantToStartInBackground.exe" Parameter
执行为;
"ProgramIWantToStartInBackground" Parameter
删除包装并应用于传入的参数。
CreateObject("Wscript.Shell").Run WScript.Arguments(0), 0, False
使用;执行
wscript.exe "Launch.vbs" ""ProgramIWantToStartInBackground.exe" Parameter"
执行为;
"ProgramIWantToStartInBackground" Parameter
【讨论】:
以上是关于在后台启动文件时,如何使此 vbs 脚本接受参数?的主要内容,如果未能解决你的问题,请参考以下文章
我可以将参数传递给 VBScript(使用 cscript 启动的 vbs 文件)吗?