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

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

Ответить
Настройки темы
CMD/BAT - Разбить строку, содержащую кавычки, на несколько.

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


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

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


Здравствуйте, форумчане!
Прошу помощи в разработке скрипта.

Имеется строка вида:

Код: Выделить весь код
1|Russian|Dub, Blu-ray CEE}}}2|Ukrainian|DVO}}}3|Russian|MVO, "DVD Magic"}}}4|Russian|VO, Gotlib}}}5|English}}}
Нужно разбить ее на строки по разделителю "}}}", чтобы получилось:

Код: Выделить весь код
1|Russian|Dub, Blu-ray CEE
2|Ukrainian|DVO
3|Russian|MVO, "DVD Magic"
4|Russian | VO, Gotlib
5|English
В основной строке могут быть любые символы, включая кавычки.

Отправлено: 20:55, 26-05-2022

 

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

fascinating rhythm


Moderator


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

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


Powershell:
Код: Выделить весь код
# Предполагается, что строка находится в файле
(gc "C:\temp\string.txt") -replace '}}}','}' -split '}'

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

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

Отправлено: 21:01, 26-05-2022 | #2



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

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


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


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

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


Спасибо за это вариант.
А на CMD можно это сделать?
А то я в Powershell не шарю.

PS: Строка получена как вывод другой программы.

Отправлено: 21:43, 26-05-2022 | #3


Аватара для Fors1k

Старожил


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

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


Цитата ioSIS:
А то я в Powershell не шарю. »
А чего тут шарить? Код же дали готовый, вам только запустить.
Цитата ioSIS:
Строка получена как вывод другой программы. »
Напишите команду запуска той программы, тогда можно будет все в один скрипт объединить.

DJ Mogarych, только там получится один лишний вывод из-за скобок в конце, надо бы обрезать.
Код: Выделить весь код
$str = '1|Russian|Dub, Blu-ray CEE}}}2|Ukrainian|DVO}}}3|Russian|MVO, "DVD Magic"}}}4|Russian|VO, Gotlib}}}5|English}}}'

$res = $str.Trim('}}}') -split '}}}'
$res 
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:05, 26-05-2022 | #4


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

fascinating rhythm


Moderator


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

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


А я и забыл, что -split может несколько символов в качестве разделителя использовать.
cut в bash таких вольностей не позволяет, например.

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


Отправлено: 22:41, 26-05-2022 | #5


Аватара для Fors1k

Старожил


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

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


DJ Mogarych, ага. Да хоть регулярку)

Последний раз редактировалось Fors1k, 27-05-2022 в 00:07.

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

Отправлено: 23:44, 26-05-2022 | #6


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


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

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


Цитата Fors1k:
Напишите команду запуска той программы, тогда можно будет все в один скрипт объединить. »
Код: Выделить весь код
MediaInfo.exe --Output=Audio;%StreamKindPos%^|%Language/String%^|%Title%}}} D:\1\Test_quotes.mkv
В выводе команды могут быть как двойные, так и одинарные кавычки.

Отправлено: 09:58, 27-05-2022 | #7


Аватара для Fors1k

Старожил


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

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


Код: Выделить весь код
$mediaInfo = "D:\MediaInfo.exe"
$videoPath = "D:\Фмльмы\TheGame.HDR.mkv"

$audioInfo = .$mediaInfo "--Output=Audio;%StreamKindPos%|%Language/String%|%Title%}}}" $videoPath
[Text.Encoding]::UTF8.GetString([Console]::OutputEncoding.GetBytes($audioInfo)).Trim("}}}")-Split("}}}") 
Вывод:
Код: Выделить весь код
1|Russian|Dub, Пифагор/Кинопоиск HD
2|Russian|MVO, HDRezka Studio
3|Russian|DVO, Pazl Voice
4|English|
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:20, 27-05-2022 | #8


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

fascinating rhythm


Moderator


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

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


Цитата ioSIS:
%Title%}}} »
Может, убрать эти фигурные скобки в конце, и их не нужно будет отрезать потом?

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


Отправлено: 13:58, 27-05-2022 | #9


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


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

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


Цитата DJ Mogarych:
Цитата ioSIS:
%Title%}}} »
Может, убрать эти фигурные скобки в конце, и их не нужно будет отрезать потом?
Так они разделяют данные каждой дорожки. Без них простот склеится в одну строку, и как разделять потом?

Отправлено: 16:05, 27-05-2022 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Разбить строку на части и выбрать нужную часть в переменную virginkoks Скриптовые языки администрирования Windows 8 15-12-2020 05:15
CMD/BAT - Разбить строку на две подстроки по последнему символу \ kokos76 Скриптовые языки администрирования Windows 2 09-01-2016 09:32
Flash - разбить флэшку на несколько разделов Юzverь Накопители (SSD, HDD, USB Flash) 48 11-11-2015 12:04
Flash - Разбить на несколько разделов. nokogerra Накопители (SSD, HDD, USB Flash) 0 21-09-2015 19:58
Любой язык - [решено] Как разбить одну строку на много строк KooDI Скриптовые языки администрирования Windows 56 06-08-2013 23:26




 
Переход