Войти

Показать полную графическую версию : [решено] Изменить текстовый файл


PoltavaPGS
05-10-2011, 15:35
Доброго времени суток. Может кто поможет в решении такой вот задачки
Есть текстовый файл примерно на 2000 строк
в нем есть строка MENUITEM "&Поликарпов П.П.|Поликарпов"
Нужно чтобы при запуске скажем bat файла у пользователя запрашивало ввод его фамилии и затем Поликарпов П.П. заменялся на ту фамилию которую ввел пользователь.
подскажите как это лучше сделать. Пример файла который нужно изменить во вложении

Iska
05-10-2011, 17:06
PoltavaPGS, если без проверок, то примерно так:
Option Explicit

Const ForReading = 1
Const ForWriting = 2

Const TristateTrue = -1


Dim strFIO

Dim strFileName
Dim strContent

Dim strFind
Dim strReplace


strFileName = WScript.Arguments.Item(0)

strFind = "MENUITEM ""&Поликарпов П.П.|Поликарпов"""
strReplace = ""

With WScript.CreateObject("Scripting.FileSystemObject")
If .FileExists(strFileName) Then
strFIO = Trim(InputBox("Введите Ваши фамилию, имя, отчество в виде:" & vbCrLf & vbCrLf & _
"Иванов И.И.", "Введите фамилию, имя, отчество", ""))

If Len(strFIO) <> 0 Then
strReplace = "MENUITEM ""&" & strFIO & "|" & Split(strFIO)(0) & """"

With .OpenTextFile(strFileName, ForReading, False, TristateTrue)
strContent = .ReadAll()

.Close
End With

With .OpenTextFile(strFileName, ForWriting)
.Write Replace(strContent, strFind, strReplace)

.Close
End With
End If
Else
WScript.Echo "Файл [" & strFileName & "] не найден"
End If
End With

WScript.Quit 0
Файл для обработки указываете аргументом скрипта:
Script.vbs "c:\Sample folder\GRAPHIC.PMN"
либо непосредственно в коде вместо присвоения аргумента:
strFileName = "c:\Sample folder\GRAPHIC.PMN"

P.S. Если Вам действительно надо будет регулярно менять, я бы вместо конкретной фамилии «&Поликарпов П.П.|Поликарпов» вставил шаблон-заполнитель, который бы потом искался и заменялся.

PoltavaPGS
05-10-2011, 17:21
Спасибо то что нужно!!!

PoltavaPGS
18-10-2011, 12:23
Так есть парочка проблем
1) Это то что файл после замены в нем строки таким образом получается в половину меньшего размера. Полагаю что то в кодировках зарыто ??? так вот после таких манипуляций программа для которой он непосредственно предназначен открывает его без проблем. И блокнот тоже без вопросов. А вот программа специально для удобного редактирования этого файла напрочь отказывается его открывать.
2)Как быть если нужно заменить несколько раз ввод еще одной строки ничего не дал что я не так делаю ???
.Write Replace(strContent, strFind, strReplace)
.Write Replace(strContent, strFind2, strReplace2)

Iska
18-10-2011, 14:48
1) Это то что файл после замены в нем строки таким образом получается в половину меньшего размера. »
Архив с файлом до, файлом после, и Ваш код скрипта.
2)Как быть если нужно заменить несколько раз ввод еще одной строки ничего не дал что я не так делаю ??? »
Для начала — расставлять знаки препинания до появления в предложении смысла.

PoltavaPGS
26-10-2011, 16:56
Всем спасибо! Во всем разобрался.




© OSzone.net 2001-2012