Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Выделить всё что между A и B

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


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

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


Здравствуйте, помогите пожалуйста, сделать два скрипта.

Есть файл 1.txt примерно с таким содержанием:

"mixedTags":[],"sedIds":[],"relatedCount":{"73501482":923},"wasLoaded":true,"NonTags":false,"hasFinished":false,"recommende d":[]},"NomesTop":{"contestType":null,"isPending":true,"loadError":null,"points":[],"prizes":[],"scores":[],"tops":[],"winnerIds":[]},"relations":{"49020024":045},"wasNoLoaded"

Файл большой, это примерный отрывок
Надо выделить всё что находится между "relatedCount" и "wasLoaded"
Содержимое может быть разным

в первом скрипте:
содержимое записать в файл 2.txt

во втором:
содержимое удалить и результат тоже записать в файл 2.txt

Отправлено: 18:15, 17-11-2021

 

Старожил


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

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


на повершелле довольно элементарно - рассматриваете этот вариант ?

Отправлено: 19:24, 17-11-2021 | #2



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

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


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


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

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


Это и есть кусок, файл полностью на английском с разными знаками и цифрами, но уникальные в нём "relatedCount" и "wasLoaded" здесь надо выделить :{"73501482":923},

Отправлено: 19:53, 17-11-2021 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Powershell
Код: Выделить весь код
$file = gc "C:\temp\text.txt"
$file -replace '(.+relatedCount\")(.+)(\"wasLoaded.*)','$2' > "C:\temp\2.txt"
$file -replace '(.+relatedCount\")(.+)(\"wasLoaded.*)','$1$3' >> "C:\temp\2.txt"
Наверное, можно и поизящнее, но я не знаю, как сохранить сегменты -replace.


Эврика!
Код: Выделить весь код
(gc "C:\temp\text.txt") -match '(.+relatedCount\")(.+)(\"wasLoaded.*)'
$matches[2] > "C:\temp\2.txt"
$matches[1] + $matches[3] >> "C:\temp\2.txt"

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 17-11-2021 в 20:24.

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

Отправлено: 20:09, 17-11-2021 | #4


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
cls
	Set "FileIn=Z:\Box_In\1 текстовый файл.txt"
	Set "FileOut1=Z:\Box_In\2 текстовый файл.txt"
	Set "FileOut2=Z:\Box_In\3 текстовый файл.txt"

	Set "Begin="relatedCount":"
	Set "End="wasLoaded":"

	Set /P InTxt=<"%FileIn%"

	Call Set "OutTxt=%%InTxt:%Begin%=*%%"
	Call Set "OutTxt=%%OutTxt:%End%=*%%"

	For /F "tokens=2 delims=*" %%i IN ("%OutTxt%") Do (
		>"%FileOut1%" (Echo %%i)
		>"%FileOut2%" (Call Echo %%InTxt:%%i=%%)
	)
Pause
Exit /B

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 20:15, 17-11-2021 | #5


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


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

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


Вложения
Тип файла: txt History.txt
(47.7 Kb, 24 просмотров)

Спасибо, но к сожалению работает только если в файле 1023 символа и нет перевода строки.

Мне просто часто приходится выполнять такую задачу: выделять часть из какого нибудь текста (файла).

Давайте так, вот файл:

http://forum.oszone.net/attachment.p...1&d=1637211390

Надо выделить всё что между Example: и if largest

Должно получиться -mf=BCJ2:d9M,

Отправлено: 07:59, 18-11-2021 | #6


Ветеран


Contributor


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

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


ferum, Для конкретного примера, текст разбит построчно
Код: Выделить весь код
@Echo Off
cls
	Set "FileIn=D:\Мой контент\Загрузки\History.txt"
	Set "FileOut=Z:\Box_In\2 текстовый файл.txt"

	Set "Begin=  Example: "
	Set "End= if largest"

	>"%FileOut%" (For /F "usebackq delims=" %%i In (`2^>nul FINDSTR /I /X /R /C:"^.*%Begin:.=\.%.*%End:.=\.%.*" "%FileIn%"`) Do (
		Set "Out=%%i"
		Call Set "Out=%%Out:*%Begin%=%%"
		Call Set "Out=%%Out:%End%=^%%"
		For /F "usebackq tokens=1 delims=^" %%s In (`Call Echo %%Out%%`) Do Echo %%s
	))
Pause
Exit /B
Если строка с указанным контекстом очень длинная - не получится в CMD.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 18-11-2021 в 09:46.

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

Отправлено: 09:37, 18-11-2021 | #7


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Powershell:
Код: Выделить весь код
(((gc "D:\temp\History.txt" -raw) -split 'Example:') -split 'if largest')[1]

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 09:49, 18-11-2021 | #8


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


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

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


Спасибо, а на vbs или js можно сделать что-нибудь универсальное? )

Отправлено: 10:03, 18-11-2021 | #9


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Powershell из принципа не используете?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 10:08, 18-11-2021 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Edit 4 — Выделить всё... semiono AutoIt 5 10-06-2010 19:59
DVB платы и всё что касается спутнека PERMYAK Хочу все знать 2 16-04-2009 22:55
Винты, материнка - и всё что я ненавижу! PwDick Непонятные проблемы с Железом 17 14-01-2009 08:33
[решено] Предложение выделить раздел "Драйвера и всё, что с ними связано" truvo О сайте и форуме 11 07-06-2008 06:08
Всё что нужно для выньНТ zhulik Сетевые технологии 5 27-07-2003 20:06




 
Переход