Чтение нескольких переменных из текстового файла в сценарии VB

Я хочу иметь возможность одновременно читать две переменные в VBScript. Что я делаю, так это заменяю определенный текст из кучи файлов HTML. У меня уже есть сценарий, написанный для этого, но я должен вводить только один набор текста за раз. Пример командной строки:

C:> replace.vbs (Старый текст) (Новый текст)

где (OldText) и (NewText) — оба параметра.

strOldText = WScript.Arguments.Item(0)
strNewText = WScript.Arguments.Item(1)

Есть ли способ настроить текстовый файл, например:

(OldText) (NewText)
(OldText) (NewText)
(OldText) (NewText)
(OldText) (NewText)

и читать сценарий по одному?

Мой код поиска и замены работает отлично. Я просто хотел бы автоматизировать сценарий для чтения параметров из текстового файла, а не вводить их по одному в командной строке.

Любая помощь приветствуется. Если нужна дополнительная информация, пожалуйста, дайте мне знать. Я надеюсь, что это ясно. Спасибо


person Scape    schedule 24.07.2012    source источник


Ответы (2)


Я бы, вероятно, использовал PowerShell для всего этого, а не только для вызова скрипта, но я думаю, что это должно работать. Если нет, проблема, вероятно, в том, как я пытаюсь вызвать vbscript в своем примере.

PowerShell:

Import-CSV textReplace.csv | % {
    wscript.exe replace.vbs $_.OldText $_.NewText
}

Содержимое CSV-файла:

OldText,NewText
"String 1","String 2"
"String 3,"String 4"
person Chris N    schedule 24.07.2012
comment
Спасибо, Крис. Я никогда не использовал это раньше, но это сработало отлично! - person Scape; 25.07.2012
comment
Рад слышать. PowerShell — это простой, гибкий язык сценариев, который Microsoft использует сейчас и в обозримом будущем. Проверьте это! - person Chris N; 26.07.2012

Вы ищете что-то подобное?

strDelimiter = " "

strInfilePath = "C:\Path to file to read.txt"

Const ForReading = 1

Set objFso    = CreateObject("Scripting.FileSystemObject")
Set objInfile = objFso.OpenTextFile(strInfilePath, ForReading)

Do While Not objInfile.AtEndOfStream
    strLine    = objInfile.ReadLine
    arrParts   = Split(strLine, strDelimiter)
    strOldText = arrParts(0)
    strNewText = arrParts(1)
Loop
person Nilpo    schedule 24.07.2012
comment
Nilpo, Это тоже работает, я попробовал оба ответа просто для удовольствия. Спасибо за помощь! - person Scape; 25.07.2012