继续使用rojo在escape double quotes in param file to batch script提供的脚本,在解析了初始数据文件之后,我需要从批处理中调用.vbs脚本。 .vbs脚本需要提供2个通过解析初始数据文件生成的标记。其中一个令牌是服务器上文件的URL,另一个是本地磁盘上的路径。 .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>>
我需要调用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
答案 0 :(得分:0)
在您的文件中使用:
.BAT呼叫.VBS
cscript //nologo [FILE.vbs] argsX argsY
对于.JS呼叫.VBS
wsShell = WScript.CreateObject("WScript.Shell");
wsShell.run ("[FILE.VBS] argsX argsY");
您需要将两个参数读入.vbs并执行以下操作:
Set args = WScript.Arguments
argsX = args.Item(0)
argsY = args.Item(1)
你的代码有这个,但我想我会记下如何为其他寻找类似解决方案的人做这件事。
现在您可以像使用代码中的变量一样使用参数/参数。
.BAT示例使用testB.bat进行测试,其中是以下代码行。
@ECHO OFF
cscript //nologo testv.vbs Hey There
使用test.js测试了.JS示例,其中包含以下代码行。
wsShell = WScript.CreateObject("WScript.Shell");
wsShell.run ("testV.VBS Hey There");
testV.vbs中的代码行如下。
Set args = WScript.Arguments
firstArg = args.Item(0)
secondArg = args.Item(1)
MsgBox(firstArg)
MsgBox(secondArg)
所有文件都存储在同一目录中。双击test.js或testB.bat文件会创建两个消息框。第一个说“嘿”,第二个说“有”。