|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Замена текста с помощью VBScript. |
|
|
VBS/WSH/JS - Замена текста с помощью VBScript.
|
Новый участник Сообщения: 8 |
Здравствуйте.
Нужна ваше помощь. В файле text.txt есть строчка с текстом строчка, нужно найти её и добавить в начале, ну например цифру 1, чтобы получилось 1строчка (либо просто заменить строчка на 1строчка). Но если в этом файле уже есть 1строчка, то наоборот убрать 1, чтобы получилось строчка. |
|
Отправлено: 20:14, 09-12-2011 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Sally88, например, так:
Option Explicit Const ForReading = 1 Const ForWriting = 2 Dim strFile Dim strFind Dim strFindPlus Dim objFSO Dim objRegExp Dim strContent strFile = "E:\Песочница\0099\text.txt" strFind = "строчка" strFindPlus = "1" & strFind With WScript.CreateObject("Scripting.FileSystemObject") If .FileExists(strFile) Then Set objRegExp = WScript.CreateObject("VBScript.RegExp") With objRegExp .IgnoreCase = True .Global = True .Pattern = strFindPlus End With With .OpenTextFile(strFile, ForReading) strContent = .ReadAll() .Close End With With .OpenTextFile(strFile, ForWriting) If objRegExp.Test(strContent) Then .Write objRegExp.Replace(strContent, strFind) Else objRegExp.Pattern = strFind .Write objRegExp.Replace(strContent, strFindPlus) End If .Close End With Set objRegExp = Nothing Else WScript.Echo "File [" & strFile & "] not found" End If End With WScript.Quit 0 |
Отправлено: 08:58, 10-12-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Спасибо большое. Все получилось.
|
Отправлено: 11:47, 10-12-2011 | #3 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать А если текст который нужно найти и добавить к нему символ, содержит двойные кавычки ( например строчка "01" )
|
Последний раз редактировалось Sally88, 10-12-2011 в 12:17. Отправлено: 12:05, 10-12-2011 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 12:57, 10-12-2011 | #5 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 17:05, 10-12-2011 | #6 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать И снова я. День добрый.
Что нужно поменять в скрипте, чтобы нужный мне символ добавлялся не в начале искомого слова, а в начале строчки содержащей искомое слово? Пример: В файле есть строчка "кино, домино, вино", нужно найти эту строчку по слову "домино" и добавить в начале "1 ", чтобы получилось "1 кино, домино, вино". И в догонку такая ситуация. Допустим, файле есть две строчки с искомым словом. Но одна уже содержит символ который необходимо добавить, а в начале второй его нет. Необходимо добавить его к строчкам где его нет и убрать у строчек где он есть. |
Последний раз редактировалось Sally88, 13-12-2011 в 20:12. Причина: добавления Отправлено: 19:55, 13-12-2011 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Использую похожую тему.
fName = "D:\Delete\111.txt" ' Где текстовый файл tStrok = "домино" ' Что ищем в строке текста bStrok = "1" ' Что вставляем/удаляем в начале найденной строки Set FSO = CreateObject("Scripting.FileSystemObject") Set F = FSO.OpenTextFile(fName, 1, False) ' Открываем исходный текст файл для чтения AllTxt = F.ReadAll() ' Cчитываем весь файл в строковую переменную F.Close ' Закрываем файл Mas = Split(AllTxt, vbCrLf) ' Разбиваем полученную строку в массив. Резделитель - конец строки и перевод строки vbCrLf N = UBound(Mas) LtStrok = LCase(tStrok) ' Преобразуем иском подстроку к ниж регистру LbStrok = LCase(bStrok) ' Преобразуем вставляем/удаляем подстроку к ниж регистру ii = Len(bStrok) For i = 0 To N LMas = LCase(Mas(i)) ' Преобразуем строку к ниж регистру If InStr(1, LMas, LtStrok, 1) <> 0 Then ' Если подстрока найдена If InStr(1, LMas, LbStrok, 1) = 1 Then ' Если в начале строки есть удаляемая подстрока Mas(i) = LTrim(Mid(Mas(i), ii + 1)) Else Mas(i) = bStrok + " " + Mas(i) End If End If Next AllTxt = Join(Mas, vbCrLf) ' Консолидируем массив в строку для записи Set F = FSO.OpenTextFile(fName, 2, False) ' Открываем исходный файл для записи F.Write AllTxt ' Записываем полученное на место исходного файла F.Close ' Закрываем файл |
------- Отправлено: 22:38, 13-12-2011 | #8 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Проверил, скрипт отрабатывает как нужно.
Спасибо за ваше решение, да еще с комментариям. |
Отправлено: 18:59, 14-12-2011 | #9 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать megaloman
А можно в скрипт добавить исключение. Чтобы он не модифицировал подходящие по критериям строчки, но содержащие исключающее слово. Например исключающее слово "другое". Тогда вот в таком списке... кино, домино 1 кино, домино, вино кино, домино, вино кино, домино, вино и другое. ...должны модифицироваться все строчки, кроме последней, содержащей слово "другое". |
Отправлено: 19:15, 15-12-2011 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Замена текста в txt | Starter1 | Скриптовые языки администрирования Windows | 17 | 04-08-2022 18:26 | |
CMD/BAT - [решено] Поиск и замена текста | ajakzs | Скриптовые языки администрирования Windows | 18 | 08-08-2013 16:10 | |
VBS/WSH/JS - [решено] Как изменить конкретную строку в текстовом файле с помощью Vbscript | neo21 | Скриптовые языки администрирования Windows | 8 | 30-10-2011 15:47 | |
VBS/WSH/JS - [решено] Как создать файл в кодировке UTF-8 с помощью VBScript? | Zeron | Скриптовые языки администрирования Windows | 2 | 30-05-2011 03:50 | |
Офис и Текст - Замена текста | Котяра | Программное обеспечение Windows | 1 | 29-09-2008 13:51 |
|