我正在尝试将批处理文件中的参数传递给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有谁能帮忙吗?
发布于 2016-08-29 16:15:23
您的代码中有两个问题。第一个是变量赋值
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"在引号保护赋值的情况下,等号周围没有空格,请注意,使用此语法时,引号不会存储在变量value中。
第二个问题是如何使用变量。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属性从进程环境中检索变量内容。
https://stackoverflow.com/questions/39200013
复制相似问题