0

rojo が提供するスクリプトの続きで、escape double quotes in param file to batch scriptで、初期データ ファイルを解析した後、バッチから .vbs スクリプトを呼び出す必要があります。.vbs スクリプトには、初期データ ファイルの解析によって生成された 2 つのトークンを指定する必要があります。トークンの 1 つはサーバー上のファイルへの URL で、もう 1 つはローカル ディスク上のパスです。.vbs スクリプトは、トークン 1 で指定されたファイルを、トークン 2 で指定されたローカル パスにダウンロードします。私がやりたいことは、上記のスクリプトで .vbs スクリプトを呼び出し、トークンをパラメーターとして渡すことです。myvbscript.vbs /FileURL:" https://abc.com/a.pdf " /HDLocation:"C:\a.pdf"

これが私が持っている.batファイルです。

    @if(@a==@b) @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>> 

<<INVOKE VBSCRIPT WITH PARAMETERS>>Please helpの代わりに vbscript を呼び出す必要があります}

上記のスクリプトで、トークンをパラメーターとして渡して .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
4

1 に答える 1