麻烦的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不是我的强项,有没有人有任何帮助?

  1. 命令行参数是string,而不是对象,因此不需要使用Set关键字进行赋值:

     inf = Args(0) outf = Args(1) 
  2. 还要注意,上面的代码已经给你了参数值,所以没有必要使用.Value.ToString等(事实上,这样做会导致运行时错误)。

  3. 你的脚本中有拼写错误 – infoutfvariables后来被称为infileoutfile