|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Как изменить конкретную строку в текстовом файле с помощью Vbscript |
|
VBS/WSH/JS - [решено] Как изменить конкретную строку в текстовом файле с помощью Vbscript
|
Пользователь Сообщения: 66 |
Профиль | Отправить PM | Цитировать Добрый день! Помогите написать скрипт замены определенной строки текстовом файле с помощью Vbscript
|
|
Отправлено: 12:02, 29-10-2011 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать neo21, что такое конкретная строка? Подробнее объясните задачу. Или это номер строки в текстовом файле? Или это подстрока, которую надо заменить во всём тексте? Что делать, если таких подстрок много? Чем подробнее объясните, тем скорее и качественнее получите ответ. ИМХО, копаться в чужом скрипте, чтобы его поменять, мало кому интересно, особенно если не ясно, что нужно получить.
|
------- Отправлено: 12:30, 29-10-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 66
|
Профиль | Отправить PM | Цитировать megaloman, - Это номер строки в текстовом файле, в файле .txt 266 строк, нужно заменить строку 3 на новую
|
Последний раз редактировалось neo21, 29-10-2011 в 15:40. Отправлено: 15:21, 29-10-2011 | #3 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать fName = "D:\Delete\111.txt" ' Где текстовый файл iStrok = 3 ' В какой строке меняем текст repTxt = "У попа была собака, он её любил" ' Какой текст поместим в указанную строку Set FSO = CreateObject("Scripting.FileSystemObject") Set F = FSO.OpenTextFile(fName, 1, False) ' Открываем исходный текст файл для чтения AllTxt = F.ReadAll() ' Cчитываем весь файл в строковую переменную F.Close ' Закрываем файл AllTxt = Replace(AllTxt, vbLf, "") ' Удаляем все символы перевода строки в переменной Mas = Split(AllTxt, vbCr) ' Разбиваем полученную строку в массив. Резделитель - конец строки vbCr nStrok = UBound(Mas) ' Макс значение индекса массива (Число строк -1 в исходном тексте- нумерация элементов массива с 0) AllTxt = "" If nStrok + 1 >= iStrok Then Mas(iStrok - 1) = repTxt ' Заменяем нужный элемент массива (строку текста) заданной For i = 0 To nStrok If i <> nStrok Then AllTxt = AllTxt + Mas(i) + vbCrLf ' Формируем строку из элементов массива, вставляя символы конца и перевода строки Else AllTxt = AllTxt + Mas(i) ' В конце последней строки ничего не ставим End If Next Set F = FSO.OpenTextFile(fName, 2, False) ' Открываем исходный файл для записи F.Write AllTxt ' Записываем полученное на место исходного файла F.Close ' Закрываем файл End If |
------- Отправлено: 17:39, 29-10-2011 | #4 |
Пользователь Сообщения: 66
|
Профиль | Отправить PM | Цитировать megaloman, Спасибо большое, очень помогли мне.
|
|
Отправлено: 17:53, 29-10-2011 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 18:46, 29-10-2011 | #6 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать С учетом замечания Iska, скрипт существенно сократился
fName = "D:\Delete\111.txt" ' Где текстовый файл iStrok = 3 ' В какой строке меняем текст repTxt = "У попа была собака, он её любил" ' Какой текст поместим в указанную строку Set FSO = CreateObject("Scripting.FileSystemObject") Set F = FSO.OpenTextFile(fName, 1, False) ' Открываем исходный текст файл для чтения AllTxt = F.ReadAll() ' Cчитываем весь файл в строковую переменную F.Close ' Закрываем файл Mas = Split(AllTxt, vbCrLf) ' Разбиваем полученную строку в массив. Резделитель - конец строки и перевод строки vbCrLf If UBound(Mas) + 1 >= iStrok Then Mas(iStrok - 1) = repTxt ' Заменяем нужный элемент массива (строку текста) заданной AllTxt = Join(Mas, vbCrLf) ' Консолидируем массив в строку для записи Set F = FSO.OpenTextFile(fName, 2, False) ' Открываем исходный файл для записи F.Write AllTxt ' Записываем полученное на место исходного файла F.Close ' Закрываем файл End If |
------- Последний раз редактировалось megaloman, 30-10-2011 в 15:49. Отправлено: 08:44, 30-10-2011 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать megaloman,
nStrok = UBound(Mas) ' Макс значение индекса массива (Число строк -1 в исходном тексте- нумерация элементов массива с 0) Наверное, Вы хотели совсем «nStrok» исключить, наподобие: и присвоение — убрали, а строку с условием поправить подзабыли?! |
Отправлено: 14:15, 30-10-2011 | #8 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Спасибо Каюсь! Каюсь Каюсь! Спешка. Исправил...
|
------- Отправлено: 15:47, 30-10-2011 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Удаление строк в текстовом файле, как это сделать??? | VladZombie | Скриптовые языки администрирования Windows | 70 | 08-09-2020 13:28 | |
VBS/WSH/JS - [решено] Как создать файл в кодировке UTF-8 с помощью VBScript? | Zeron | Скриптовые языки администрирования Windows | 2 | 30-05-2011 03:50 | |
Загрузка - Как изменить надпись на текстовом этапе | Microteam | Microsoft Windows 2000/XP | 2 | 27-03-2011 12:20 | |
[решено] Найти и заменить в текстовом файле. Как? | Pozia | AutoIt | 15 | 11-03-2010 19:12 | |
[решено] Как удалить строки в текстовом файле при отсутсвии файла в опрелеленном месте? | Pozia | AutoIt | 23 | 14-05-2009 21:41 |
|