【问题标题】:pass arguments from batch file to VBScript File将参数从批处理文件传递到 VBScript 文件
【发布时间】:2016-08-29 06:43:33
【问题描述】:

我正在尝试将参数从批处理文件传递到 vb 脚本文件。

set InputFile ="C:\Temp\InputFile_mod.csv"
set outPutFile = "C:\Temp\outputFile.dat"

我尝试如下传递变量,但我没有得到任何东西到 vbscript 文件。

cscript SFEVBMacro.vbs  InputFile outPutFile

但是如果我通过像下面这样的文件的直接路径它工作正常

cscript SFEVBMacro.vbs  C:\Temp\InputFile_mod.csv C:\Temp\outputFile.dat.

用变量传递参数有什么问题吗?

VBSCRIPT 代码:

Set args = WScript.Arguments
inputFile = WScript.Arguments.Unnamed(0)
createdFilePath = WScript.Arguments.Unnamed(1)

Sub ReadCSVFile()
   Set objFileToRead = objFSO.OpenTextFile(inputFile,1)
   REM Read the csv file
End Sub
ReadCSVFile

有人可以帮忙吗。

【问题讨论】:

  • Ryan 我添加了 vbscript 代码。
  • 删除set 命令行中= 符号周围的空格,因为它们成为变量名称和值的一部分,否则...扩展(读取)变量时,您需要输入其名称在一对% 标志之间......

标签: batch-file vbscript


【解决方案1】:

您的代码中有两个问题。第一个是变量赋值

set InputFile ="C:\Temp\InputFile_mod.csv"
             ^
set outPutFile = "C:\Temp\outputFile.dat"
              ^ ^

指示的空格包含在变量名中(当放置在等号的左侧时)和存储的值中(等号的右侧)

引用赋值是一个好习惯,以防止特殊字符出现问题,但推荐的语法是

set "InputFile=C:\Temp\InputFile_mod.csv"
set "outPutFile=C:\Temp\outputFile.dat"

在引号保护赋值的地方,等号周围没有空格,请注意,使用这种语法,引号不会存储在变量值中。

第二个问题是如何使用变量。您的 vbscript 代码不需要两个变量名,而是两个文件名。因此,您不必传递变量名,而是传递存储在其中的值。在批处理文件中,这是使用%varname% 完成的。

set "InputFile=C:\Temp\InputFile_mod.csv"
set "outPutFile=C:\Temp\outputFile.dat"

cscript SFEVBMacro.vbs "%InputFile%" "%outPutFile%"

批处理解析器会将变量读取操作替换为变量内部的值,然后执行命令。

如果您更喜欢传递变量名称(您的原始代码)而不是变量值,您可以这样做,但是您的 vbscript 应该更改以检索变量内容

With WScript.CreateObject("WScript.Shell").Environment("PROCESS")
    inputFile = .Item( WScript.Arguments.Unnamed(0) )
    createdFilePath = .Item( WScript.Arguments.Unnamed(1) )
End With

由于代码接收环境变量名称,我们需要使用WScript.Shell 实例的Environment 属性从进程环境中检索变量内容。

【讨论】:

    【解决方案2】:

    问题可能出在引号中。尝试用双引号而不是字符串将您发布的前两行括起来。
    这可能会有所帮助,就好像您传递不带引号的文件路径一样,但在第一个示例中,您使用引号设置它们。
    其他方法是在参数进入 vbscript 时修剪双引号。

    【讨论】:

    • 我试过但没有运气。但是在传递变量时,我观察到变量名不是传递的值。
    • 哦...是的 :D 你必须在变量名周围加上%%varname%
    猜你喜欢
    • 2012-05-19
    • 1970-01-01
    • 2017-05-01
    • 2015-08-30
    • 1970-01-01
    • 2015-08-18
    • 2011-09-15
    相关资源
    最近更新 更多