在一个名为“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代码以允许参数?
发布于 2021-10-11 16:32:24
解决这个问题的方法很多,但归根结底是理解程序如何从命令提示符中运行。
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”参数
执行为;
"ProgramIWantToStartInBackground“参数
CreateObject("Wscript.Shell").Run WScript.Arguments(0),0,False
执行使用;
wscript.exe "Launch.vbs“ProgramIWantToStartInBackground.exe”参数
执行为;
"ProgramIWantToStartInBackground“参数
发布于 2022-11-08 02:25:37
下面是处理所有可能的参数的另一个版本。
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
。
如果参数或路径中有空间,就像往常一样用""
包装它。
https://stackoverflow.com/questions/69529378
复制相似问题