PoltavaPGS |
05-10-2011 15:35 1766552 |
Изменить текстовый файл
Вложений: 1
Доброго времени суток. Может кто поможет в решении такой вот задачки
Есть текстовый файл примерно на 2000 строк
в нем есть строка
Код:
MENUITEM "&Поликарпов П.П.|Поликарпов"
Нужно чтобы при запуске скажем bat файла у пользователя запрашивало ввод его фамилии и затем Поликарпов П.П. заменялся на ту фамилию которую ввел пользователь.
подскажите как это лучше сделать. Пример файла который нужно изменить во вложении
|
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 1766651 |
Спасибо то что нужно!!!
|
PoltavaPGS |
18-10-2011 12:23 1776013 |
Так есть парочка проблем
1) Это то что файл после замены в нем строки таким образом получается в половину меньшего размера. Полагаю что то в кодировках зарыто ??? так вот после таких манипуляций программа для которой он непосредственно предназначен открывает его без проблем. И блокнот тоже без вопросов. А вот программа специально для удобного редактирования этого файла напрочь отказывается его открывать.
2)Как быть если нужно заменить несколько раз ввод еще одной строки ничего не дал что я не так делаю ???
Код:
.Write Replace(strContent, strFind, strReplace)
.Write Replace(strContent, strFind2, strReplace2)
|
Цитата:
Цитата PoltavaPGS
1) Это то что файл после замены в нем строки таким образом получается в половину меньшего размера. »
|
Архив с файлом до, файлом после, и Ваш код скрипта.
Цитата:
Цитата PoltavaPGS
2)Как быть если нужно заменить несколько раз ввод еще одной строки ничего не дал что я не так делаю ??? »
|
Для начала — расставлять знаки препинания до появления в предложении смысла.
|
PoltavaPGS |
26-10-2011 16:56 1782252 |
Всем спасибо! Во всем разобрался.
|
Время: 03:12.
© OSzone.net 2001-