我需要创建一个脚本,该脚本从脚本所在的文件夹中运行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
答案 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)