В продолжение сценария, предоставленного rojo, в escape double quotes in param file to batch script, после того, как я проанализировал исходный файл данных, мне нужно вызвать скрипт .vbs из пакета. Сценарий .vbs должен быть снабжен двумя токенами, созданными при анализе исходного файла данных. Один из токенов - это URL-адрес файла на сервере, а другой - путь на локальном диске. Сценарий .vbs загружает указанный файл, указанный токеном, на локальный путь, указанный маркером два. Что я хочу сделать, так это вызвать скрипт .vbs в приведенном выше скрипте и передать в него параметры токенов. myvbscript.vbs/FileURL: "https://abc.com/a.pdf" /HDLocation:"C:\a.pdf "вызывать .vbs из командного скрипта
Вот файл .bat, который у меня есть.
@if(@[email protected]) @end
/* :: batch portion
@ECHO OFF
setlocal if exist "%~1"
(cscript /nologo /e:jscript "%~f0" < "%~1")
else (cscript /nologo /e:jscript "%~f0")
exit /b
:: JScript portion */
while (!WSH.StdIn.AtEndOfLine) {
var line=WSH.StdIn.ReadLine();
var st_token = line.split('\t');
var FileUR="abc.com/a.pdf";
var HDLocation="C:\a.pdf";
WSH.Echo(req_id);
WSH.Echo(att_tokens[i]);
<<INVOKE VBSCRIPT WITH PARAMETERS>>
Мне нужно вызвать VBScript вместо <<INVOKE VBSCRIPT WITH PARAMETERS>>
Пожалуйста, помогите}
Пожалуйста, помогите мне, чтобы вызвать скрипт .vbs в сценарии выше преходящих лексем в качестве параметров.
Сценарий .vbs выглядит следующим образом:
'Set your settings
Set colNamedArguments = WScript.Arguments.Named
strFileURL = colNamedArguments.Item("FileURL")
strHDLocation = colNamedArguments.Item("HDLocation")
' Fetch the file
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1 'adTypeBinary
objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0 'Set the stream position to the start
Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing
objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if
Set objXMLHTTP = Nothing
Код работал отлично, хотя вы могли отказаться от «start» «cmd/c» и просто запустить 'cscript' напрямую. Как именно он «не работает» для вас? Вы получили сообщение об ошибке? Какова ценность 'objXMLHTTP.Status'? –
Код, который я обновил ниже, должен предоставить вам то, что вам нужно. – AxGryndr