在VBScript中运行带有参数的exe文件

时间:2016-10-14 10:55:29

标签: vbscript parameters

我需要创建一个脚本,该脚本从脚本所在的文件夹中运行setup.exe /configure Install.xml

当我运行下面的脚本时,它确实找到setup.exe但它没有读取参数。这就像最后一部分(/configure Install.xml)没有被阅读。

脚本:

Set objShell = CreateObject("Wscript.Shell")
strPath = Wscript.ScriptFullName
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(strPath)
strFolder = objFSO.GetParentFolderName(objFile) 
strPath = "setup.exe /configure Install.xml ," & strFolder
objShell.Run strPath

2 个答案:

答案 0 :(得分:1)

您的代码很可能找不到并运行脚本文件夹中的setup.exe,但setup.exe中的某处%PATH%不同。

简单地将文件夹附加到命令行是不会做你想要的。您有两种方法可以解决此问题:

  • 按照@AlexK.的建议,使用完整路径运行setup.exe。您可能还需要提供Install.xml的完整路径。使用BuildPath方法构建路径。您可能还希望在路径周围添加引号以处理其中的空格。

    Function qq(str) : qq = """" & str & """" : End Function
    
    strPath = qq(objFSO.BuildPath(strFolder, "setup.exe")) & " /configure " & _
              qq(objFSO.BuildPath(strFolder, "Install.xml"))
    objShell.Run strPath
    
  • 将工作目录更改为包含脚本和setup.exe的文件夹,然后运行不带路径的命令(或相对路径.\setup.exe)。

    objShell.CurrentDirectory = strFolder
    strPath = "setup.exe /configure Install.xml"
    objShell.Run strPath
    

答案 1 :(得分:0)

谢谢你们!我把它混合起来,使这对我有用。 (不确定某些东西是否可以变得更干净,但它有效!)

Dim WshShell
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set objShell = CreateObject("Wscript.Shell")
Set WshEnv = WshShell.Environment("PROCESS")
Set objShell = CreateObject("Wscript.Shell")
strPath = Wscript.ScriptFullName
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(strPath)
strFolder = objFSO.GetParentFolderName(objFile)
objShell.CurrentDirectory = strFolder
WshEnv("SEE_MASK_NOZONECHECKS") = 1 
WshShell.Run("setup.exe /Configure Install.xml"), 0, true 
WshEnv.Remove("SEE_MASK_NOZONECHECKS")
wscript.quit(RetVal)