开发者

Trouble with strings passed as parameters from command line

开发者 https://www.devze.com 2023-01-08 11:28 出处:网络
I\'m trying to convert a flat file into an Excel-readable format. We receive the text file that uses the tilde (~) as a field delimiter, and I want to convert it into one that uses the Tab character.

I'm trying to convert a flat file into an Excel-readable format. We receive the text file that uses the tilde (~) as a field delimiter, and I want to convert it into one that uses the Tab character. I'm interested in running this from the command line, and I need to be flexible with the filenames, so I want to use parameters. The VBScript I have for it is as follows:

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

For some reason, I get the error Object required: '[string: "infile.txt"]'. Using either infile, infile.V开发者_JS百科alue or infile.ToString as the argument in objFSO.OpenTextFile(infile, ForReading) doesn't seem to work.

VBScript not being my strong point, does anyone have any help?


  1. Command-line parameters are strings and not objects, so there's no need to use the Set keyword for assignments:

    inf = Args(0)
    outf = Args(1)
    
  2. Note also that the above code already gives you the parameter values, so there's no need to use .Value, .ToString etc (in fact, doing this will result in a run-time error).

  3. There're typos in your script — the inf and outf variables are later referred to as infile and outfile.

0

精彩评论

暂无评论...
验证码 换一张
取 消