从批处理

时间:2016-03-28 15:15:46

标签: batch-file vbscript runtime-error

批代码(选项1)

我通常使用它来简单地从批处理中调用vbs,不包含任何变量。

@echo off
myVBSpath=\\UNC\path
set vbsFileName=myVBS.vbs
cscript "%myVBSpath%\%vbsFileName%"
pause

批代码(选项2)

我通常在将变量从批处理传递给VBS时使用此选项...包括变量名称& vbs文件路径和名称后的值。

@echo off
set myVBSpath=\\UNC\path
set vbsFileName=myVBS.vbs
cscript //NoLogo "%myVBSpath%\%vbsFileName%" /attachment: "%myAttachment%"
pause

产生的批错误消息

无论我在上面使用哪个选项,都会收到以下错误消息:

  

\\ UNC \ path \ myVBS.vbs(11,1)Microsoft VBScript运行时错误:参数   不是可选的

VBS代码

Dim xlApp 
Dim xlBook 
'Dim attachmentFullName
'attachmentFullName = WScript.Arguments.Named("attachment")

Set xlApp = CreateObject("Excel.Application") 
Set xlBook = xlApp.Workbooks.Open("\\UNCpath\myExcelFile.xlsm", 0, True) 

xlApp.DisplayAlerts = False
xlApp.Run "myMacro" ', Cstr(attachmentFullName)
xlApp.Quit 

Set xlBook = Nothing 
Set xlApp = Nothing 

疑难解答

要求将变量传递给vbs,因此批量代码(选项1)应该是可行的方式,以及我的开始方式。当我收到上面的运行时错误消息时,我尝试使用选项2传递一个false变量,看看是否提供了cscript命令正在查找的额外参数。不幸的是,选项2给出了相同的错误消息。

这是一个相当直接的批处理脚本,所以我真的很茫然,觉得我可能只是盯着它看太久,使它变得比它需要的更难,而且我和#39;我只是遗漏了一些简单的东西。

你们中的任何一个人是否愿意给我一双新的眼睛并让我知道导致我的运行时错误的原因?

谢谢!

1 个答案:

答案 0 :(得分:0)

我的解决方案可能只有一次 - 但这里是对批处理脚本中注意到此错误的人员的故障排除步骤的快速摘要:

  1. 检查cscript行以确保没有意外传递(或未传递)参数。
  2. 检查VBS以确保代码不再请求参数变量(或者如果传递则接受一个变量) - 谢谢@Hackoo
  3. 检查VBA以确保Sub没有请求变量 - 感谢@DavyC!