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

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

Ответить
Настройки темы
VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.

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


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

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


Желательно js/
Есть файл fb2. В нем есть лишние абзацы. Нужно при запуске скрипта, опросить начальную строку и конечную строку. И после нажатия "ок", удалить все между этих строк, включая эти строки.
Пример есть текст :

Скрытый текст
Обговорив с женой через интерфейс скафандров все обнаруженное мы пришли пока к решению не форсировать события и посмотреть что будет дальше. Общаться решили через интерфейс скафандра из за моей паранойи, в моем прошлом мире я слышал байки о том что сильный маг разума может подслушивать телепатическую связь на близком расстоянии, вот и решил перестраховаться. До ужина оставалось еще два часа, а потому мы решили просто полежать и отдохнуть.
Серж
Читать

Поиск

Копилка

FAQ

Почта

Глава 2
Примерно через час к нам зашел один из подчиненных Синтия и предложил переодеться в вещи достойные приема у Синтия, показав нам традиционные одежды для высшей аристократии из моего прошлого мира. Хоть я был признанным специалистом в своей области, но в связи с моим происхождением меня редко приглашали на приемы высшей аристократии. Если быть честным то только один когда помог одному графу с доставшимися в наследство древними артефактами. У нас в империи действовал закон, согласно которому все древние артефакты подлежат сдаче государству, а оно уже потом решает само что вернуть владельцу, а что оставить себе с минимальной компенсацией. Так вот граф попросил разобраться с артефактами и определить что у него там вообще есть, ведь действуя через официального оценщика артефакты почти сто процентов попали бы государству. И в благодарность за помощь граф заплатил мне пятьсот золотых и пригласил на помолвку своей дочери, хотя мне с моим торговым происхождениям там делать было нечего.



При запуске скрипта я ввожу начальную строку"Серж", конечную строку "Глава 2". Жму "ок". И на выходе получаю
Скрытый текст
Обговорив с женой через интерфейс скафандров все обнаруженное мы пришли пока к решению не форсировать события и посмотреть что будет дальше. Общаться решили через интерфейс скафандра из за моей паранойи, в моем прошлом мире я слышал байки о том что сильный маг разума может подслушивать телепатическую связь на близком расстоянии, вот и решил перестраховаться. До ужина оставалось еще два часа, а потому мы решили просто полежать и отдохнуть.

Примерно через час к нам зашел один из подчиненных Синтия и предложил переодеться в вещи достойные приема у Синтия, показав нам традиционные одежды для высшей аристократии из моего прошлого мира. Хоть я был признанным специалистом в своей области, но в связи с моим происхождением меня редко приглашали на приемы высшей аристократии. Если быть честным то только один когда помог одному графу с доставшимися в наследство древними артефактами. У нас в империи действовал закон, согласно которому все древние артефакты подлежат сдаче государству, а оно уже потом решает само что вернуть владельцу, а что оставить себе с минимальной компенсацией. Так вот граф попросил разобраться с артефактами и определить что у него там вообще есть, ведь действуя через официального оценщика артефакты почти сто процентов попали бы государству. И в благодарность за помощь граф заплатил мне пятьсот золотых и пригласил на помолвку своей дочери, хотя мне с моим торговым происхождениям там делать было нечего.


Таких кусков текста может быть несколько.

Отправлено: 07:36, 19-01-2017

 

Ветеран


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

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


Цитата namin78:
Есть файл fb2. »
Образец файла упакуйте в архив и приложите к сообщению, либо выложите архив на RGhost/Яндекс.Диск. Укажите пример строк:
Цитата namin78:
начальную строку"Серж", конечную строку "Глава 2" »
для выложенного образца. Желательно также, чтобы образец содержал указанное Вами:
Цитата namin78:
Таких кусков текста может быть несколько. »
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:11, 19-01-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


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


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

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


Вложения
Тип файла: rar пример.rar
(11.9 Kb, 8 просмотров)

Вот примерчик.http://forum.oszone.net/attachment.p...1&d=1484808471

Отправлено: 09:48, 19-01-2017 | #3


Ветеран


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

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


Попробуйте так (WSH/VBScript):
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strSourceFile
Dim strFromString, strToString

Dim objDomDocument
Dim objXMLDOMElement

Dim boolDeletion


strSourceFile = "C:\Мои проекты\0037\пример\пример.fb2"

strFromString = InputBox("From string") ' "Rinat-106 M"
strToString   = InputBox("To string")   ' "С нами: 3 года 2 месяца"

Set objDomDocument = WScript.CreateObject("Microsoft.XMLDOM")
objDomDocument.load(strSourceFile)

boolDeletion = False

For Each objXMLDOMElement In objDomDocument.selectNodes("/FictionBook/body/section/p")
	If Not boolDeletion Then
		If StrComp(objXMLDOMElement.text, strFromString, vbTextCompare) = 0 Then
			objXMLDOMElement.parentNode.removeChild objXMLDOMElement
			boolDeletion = True
		End If
	Else
		objXMLDOMElement.parentNode.removeChild objXMLDOMElement
		
		If StrComp(objXMLDOMElement.text, strToString, vbTextCompare) = 0 Then
			boolDeletion = False
		End If
	End If
Next

objDomDocument.Save strSourceFile
Set objDomDocument = Nothing

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:22, 19-01-2017 | #4


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


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

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


Все работает. Огромное спасибо. Единственное вопрос по имени файла(пример.fb2), какой код добавить в начале в скрипт, чтобы скрипт работал с файлом, который я перетащил на него?

Разобрался сам. Огромное спасибо еще раз.

Отправлено: 21:10, 19-01-2017 | #5


Ветеран


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

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


Цитата namin78:
чтобы скрипт работал с файлом, который я перетащил на него? »
Примерно так (не проверялось):
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strSourceFile
Dim strFromString, strToString

Dim objXMLDOMElement

Dim boolDeletion


If WScript.Arguments.Count = 1 Then
	strSourceFile = WScript.Arguments.Item(0)
	
	If WScript.CreateObject("Scripting.FileSystemObject").FileExists(strSourceFile) Then
		strFromString = InputBox("From string") ' "Rinat-106 M"
		strToString   = InputBox("To string")   ' "С нами: 3 года 2 месяца"
		
		With WScript.CreateObject("Microsoft.XMLDOM")
			.load(strSourceFile)
			
			boolDeletion = False
			
			For Each objXMLDOMElement In .selectNodes("/FictionBook/body/section/p")
				If Not boolDeletion Then
					If StrComp(objXMLDOMElement.text, strFromString, vbTextCompare) = 0 Then
						objXMLDOMElement.parentNode.removeChild objXMLDOMElement
						boolDeletion = True
					End If
				Else
					objXMLDOMElement.parentNode.removeChild objXMLDOMElement
					
					If StrComp(objXMLDOMElement.text, strToString, vbTextCompare) = 0 Then
						boolDeletion = False
					End If
				End If
			Next
			
			.Save strSourceFile
		End With
	Else
		WScript.Echo "Can't find source file [" & strSourceFile & "]."
		WScript.Quit 2
	End If
Else
	WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source file>"
	WScript.Quit 1
End If

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:21, 19-01-2017 | #6


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


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

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


Вложения
Тип файла: rar Виват Император.rar
(74.0 Kb, 5 просмотров)

Iska, Вечер добрый, Вы мне недавно помогли(за что спасибо).
Есть еще одна просьба. Тот же fb2 файл, очень многие диалоги, начинаются с маленькой буквы(должны с большой).
Код: Выделить весь код
<p>— и что же? — спросил начальник абордажной команды, здоровенный бугай, с татуировкой на всю лысую голову, с изображением взбешённого осьминога.</p>
<p>— что? А вы заметили, сколько в городе на данный момент ушастых? Кстати, все они моряки, причём военные. Нашего капитана и его помощника, окучивают на предмет покупки кораблей, только цены дают… и требуют обучить их магов для пользования движителей, причём без всякой охраной клятвы.</p>
<p>— кэп запёрся в своей вотчине и никуда носа не кажет. Поговаривают даже стычка у него была с ребятами Мика. — влез в разговор ещё один из «печальных» пиратов.</p>
Надо проверить в начале строки наличие длинного тире, если есть, то проверить какая буква идет через пробел после тире, если строчная, поменять на заглавную, если заглавная ни чего не делать.
Заранее спасибо.

Последний раз редактировалось namin78, 01-02-2017 в 23:37.


Отправлено: 17:41, 31-01-2017 | #7


Ветеран


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

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



Цитата namin78:
какая буква идет через пробел после тире »
Там преимущественно неразрывные пробелы.

Примерно так: 0003.7z.

Оригинал будет сохранён в одноимённый файл с расширением .bak. Если таковой уже существовал — он будет перезаписан без подтверждения.

Последний раз редактировалось Iska, 11-02-2017 в 18:14.


Отправлено: 17:28, 11-02-2017 | #8


Ветеран


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

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


И, похоже, это ещё не конец. Там и тире не все длинные .
Код: Выделить весь код
<p>- Ты глянь какая громадина в косынке в таверну-то забрела?</p>
…
<p>- но как такое может быть?*— удивлённо взирает на безопастника император.</p>
и т.д.

Добавил уточнение в предыдущий код.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:46, 11-02-2017 | #9

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата Iska:
на безопастника »
Н-да, в том тексте с грамотностью вообще не всё, мягко говоря, в порядке: споткнувшись на этом пассаже, посмотрел и остальные приведённые здесь строки того текста.

-------
Mikhail Zhilin


Отправлено: 18:09, 11-02-2017 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как переделать скрипт удаления папок, на скрипт удаления файлов ufooo Скриптовые языки администрирования Windows 2 02-06-2015 12:22
VBS/WSH/JS - Нужно написать скрипт на VBS для удаления строки. X0E2003 Скриптовые языки администрирования Windows 1 18-02-2015 09:11
Любой язык - нужен скрипт для удаления всех файлов кроме нужных для запуска Windows XP Dark Ange1 Скриптовые языки администрирования Windows 11 07-03-2010 13:34
[решено] Скрипт для удаления нужных слов в ini файле Pozia AutoIt 23 27-10-2009 18:42
Функция PHP для удаления не нужных символов darksmoke Вебмастеру 3 01-04-2008 01:18




 
Переход