Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Замена текста с помощью VBScript.

Ответить
Настройки темы
VBS/WSH/JS - Замена текста с помощью VBScript.

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте.
Нужна ваше помощь.

В файле text.txt есть строчка с текстом строчка, нужно найти её и добавить в начале, ну например цифру 1, чтобы получилось 1строчка (либо просто заменить строчка на 1строчка).
Но если в этом файле уже есть 1строчка, то наоборот убрать 1, чтобы получилось строчка.

Отправлено: 20:14, 09-12-2011

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо большое. Все получилось.

Отправлено: 11:47, 10-12-2011 | #3


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


А если текст который нужно найти и добавить к нему символ, содержит двойные кавычки ( например строчка "01" )

Последний раз редактировалось Sally88, 10-12-2011 в 12:17.


Отправлено: 12:05, 10-12-2011 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Sally88, определитесь.

Теперь Вам надо добавлять за шаблоном поиска? Тогда так:
Код: Выделить весь код
strFind     = "строчка"
strFindPlus = strFind & " ""1"""
Или Вам именно искать надо по шаблону «строчка "01"» и менять на «1строчка "01"»? Тогда так:
Код: Выделить весь код
strFind     = "строчка ""1"""
strFindPlus = "1" & strFind
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:57, 10-12-2011 | #5


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Или Вам именно искать надо по шаблону «строчка "01"» и менять на «1строчка "01"»? Тогда так: »
Да, именно так. Я просто не очень точно выразился, хорошо что вы поняли. Еще раз, спасибо за помощь.

Отправлено: 17:05, 10-12-2011 | #6


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


И снова я. День добрый.
Что нужно поменять в скрипте, чтобы нужный мне символ добавлялся не в начале искомого слова, а в начале строчки содержащей искомое слово?

Пример:
В файле есть строчка "кино, домино, вино", нужно найти эту строчку по слову "домино" и добавить в начале "1 ", чтобы получилось "1 кино, домино, вино".

И в догонку такая ситуация. Допустим, файле есть две строчки с искомым словом. Но одна уже содержит символ который необходимо добавить, а в начале второй его нет.
Необходимо добавить его к строчкам где его нет и убрать у строчек где он есть.

Последний раз редактировалось Sally88, 13-12-2011 в 20:12. Причина: добавления


Отправлено: 19:55, 13-12-2011 | #7


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


Проверил, скрипт отрабатывает как нужно.

Спасибо за ваше решение, да еще с комментариям.

Отправлено: 18:59, 14-12-2011 | #9


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman
А можно в скрипт добавить исключение. Чтобы он не модифицировал подходящие по критериям строчки, но содержащие исключающее слово.


Например исключающее слово "другое".
Тогда вот в таком списке...

кино, домино
1 кино, домино, вино
кино, домино, вино
кино, домино, вино и другое.

...должны модифицироваться все строчки, кроме последней, содержащей слово "другое".

Отправлено: 19:15, 15-12-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Замена текста с помощью VBScript.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход