Проблема со строками, переданными в качестве параметров из командной строки - PullRequest
0 голосов
/ 19 июля 2010

Я пытаюсь преобразовать плоский файл в формат для чтения в Excel.Мы получаем текстовый файл, который использует тильду (~) в качестве разделителя полей, и я хочу преобразовать его в тот, который использует символ табуляции.Я заинтересован в запуске этого из командной строки, и мне нужно быть гибким с именами файлов, поэтому я хочу использовать параметры.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 Ответ

2 голосов
/ 19 июля 2010
  1. Параметры командной строки являются строками, а не объектами, поэтому нет необходимости использовать ключевое слово Set для назначений:

    inf = Args(0)
    outf = Args(1)
    
  2. Примечание такжечто приведенный выше код уже дает вам значения параметров, поэтому нет необходимости использовать .Value, .ToString и т. д. (фактически, это приведет к ошибке времени выполнения).

  3. В вашем скрипте есть опечатки - переменные inf и outf позже называются infile и outfile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...