首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将参数从批处理文件传递到VBScript文件

将参数从批处理文件传递到VBScript文件
EN

Stack Overflow用户
提问于 2016-08-29 14:43:33
回答 2查看 3.9K关注 0票数 1

我正在尝试将批处理文件中的参数传递给vb脚本文件。

代码语言:javascript
复制
set InputFile ="C:\Temp\InputFile_mod.csv"
set outPutFile = "C:\Temp\outputFile.dat"

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

代码语言:javascript
复制
cscript SFEVBMacro.vbs  InputFile outPutFile

但是,如果我像下面这样传递文件的直接路径,它可以正常工作

代码语言:javascript
复制
cscript SFEVBMacro.vbs  C:\Temp\InputFile_mod.csv C:\Temp\outputFile.dat.

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

VBSCRIPT代码:

代码语言:javascript
复制
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

有谁能帮忙吗?

EN

回答 2

Stack Overflow用户

发布于 2016-08-29 16:15:23

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

代码语言:javascript
复制
set InputFile ="C:\Temp\InputFile_mod.csv"
             ^
set outPutFile = "C:\Temp\outputFile.dat"
              ^ ^

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

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

代码语言:javascript
复制
set "InputFile=C:\Temp\InputFile_mod.csv"
set "outPutFile=C:\Temp\outputFile.dat"

在引号保护赋值的情况下,等号周围没有空格,请注意,使用此语法时,引号不会存储在变量value中。

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

代码语言:javascript
复制
set "InputFile=C:\Temp\InputFile_mod.csv"
set "outPutFile=C:\Temp\outputFile.dat"

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

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

如果您希望传递变量名(原始代码)而不是变量值,则可以这样做,但随后应更改vbscript以检索变量内容

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-08-29 15:08:07

问题可能出在引文中。尝试用双引号将您发布的前两行括起来,而不是字符串。

这可能会有所帮助,就好像您传递的文件路径不带引号一样有效,但在第一个示例中,您使用引号设置它们。

另一种方法是在参数进入vbscript时修剪双引号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39200013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档