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

How do I make this vbs script accept parameters when launching a file in the background?

我在名为“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 代码以允许参数?

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

launch.vbs 中的这一行将用双引号括起任何传递的命令,这仅适用于可执行文件,但在传递参数时会导致问题,因为只有可执行路径应包含在双引号中 -引号以避免路径中可能存在的任何空格出现问题。

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" Parameter
    

    执行为;

    "ProgramIWantToStartInBackground" Parameter
    
  2. 移除包装并应用于传入的参数。

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

    执行使用;

    wscript.exe "Launch.vbs" ""ProgramIWantToStartInBackground.exe" Parameter"
    

    执行为;

    "ProgramIWantToStartInBackground" Parameter