麻烦的string作为参数从命令行传递
我试图将平面文件转换为Excel可读的格式。 我们收到使用代字号(〜)作为字段分隔符的文本文件,我想将其转换为使用Tab字符的文本文件。 我有兴趣从命令行运行这个,我需要灵活的文件名,所以我想使用参数。 我为它的VBScript如下所示:
Set Args = WScript.Arguments Set inf = Args(0) Set outf = Args(1) Const ForReading = 1 Const ForWriting = 2 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile(infile.Value , ForReading) strContents = objFile.ReadAll objFile.Close strContents = Replace(strContents, "~", vbTab) Set objFile = objFSO.OpenTextFile(outfile.Value , ForWriting) objFile.Write strContents objFile.Close
出于某种原因,我得到错误的对象所需:“[string:”infile.txt“]” 。 使用infile,infile.Value或infile.ToString作为objFSO.OpenTextFile(infile, ForReading)
中的参数似乎不起作用。
VBScript不是我的强项,有没有人有任何帮助?
-
命令行参数是string,而不是对象,因此不需要使用
Set
关键字进行赋值:inf = Args(0) outf = Args(1)
-
还要注意,上面的代码已经给你了参数值,所以没有必要使用
.Value
,.ToString
等(事实上,这样做会导致运行时错误)。 -
你的脚本中有拼写错误 –
inf
和outf
variables后来被称为infile
和outfile
。