2016-10-14 5 views
1

Мне нужно создать скрипт, который запускает setup.exe /configure Install.xml из папки, в которой находится скрипт.Запуск exe-файла с параметрами в VBScript

Когда я запускаю сценарий ниже, он находит 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 
+1

Должно быть 'strPath = strFolder & "\ setup.exe/Configure install.xml"' –

+1

Должен быть ответ. ;) –

ответ

1

Скорее всего, ваш код не найти и запустить setup.exe в папке сценария, а другой setup.exe где-то в %PATH%.

Просто добавление папки в командную строку не будет делать то, что вы хотите. Есть два способа для вас, чтобы решить эту проблему:

  • Run setup.exe с полным путем, как это было предложено @AlexK.. Вероятно, вам необходимо указать полный путь до 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 
    
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)