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

Аватара пользователя
ioSIS

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

Сообщение ioSIS »

Здравствуйте, форумчане!

Прошу помощи в разработке скрипта.



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





Код:

Код: Выделить всё

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

В основной строке могут быть любые символы, включая кавычки.
Аватара пользователя
DJ Mogarych

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

Сообщение DJ Mogarych »

Powershell:



Код:

Код: Выделить всё

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

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

Сообщение ioSIS »

Спасибо за это вариант.

А на CMD можно это сделать?

А то я в Powershell не шарю.



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

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

Сообщение ioSIS »

Цитата ioSIS:



А то я в Powershell не шарю.
CMD/BAT - Разбить строку, содержащую кавычки, на несколько.




А чего тут шарить? Код же дали готовый, вам только запустить.


Цитата ioSIS:



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




Напишите команду запуска той программы, тогда можно будет все в один скрипт объединить.



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 
Аватара пользователя
DJ Mogarych

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

Сообщение DJ Mogarych »

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

cut в bash таких вольностей не позволяет, например.
Аватара пользователя
ioSIS

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

Сообщение ioSIS »

Цитата Fors1k:



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






Код:

Код: Выделить всё

MediaInfo.exe --Output=Audio;%StreamKindPos%^|%Language/String%^|%Title%}}} D:\1\Test_quotes.mkv

В выводе команды могут быть как двойные, так и одинарные кавычки.
Аватара пользователя
Fors1k

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

Сообщение Fors1k »

Код:

Код: Выделить всё

$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|
Аватара пользователя
DJ Mogarych

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

Сообщение DJ Mogarych »

Цитата ioSIS:



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




Может, убрать эти фигурные скобки в конце, и их не нужно будет отрезать потом?
Аватара пользователя
ioSIS

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

Сообщение ioSIS »

Цитата DJ Mogarych:




Цитата ioSIS:



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




Может, убрать эти фигурные скобки в конце, и их не нужно будет отрезать потом?



Так они разделяют данные каждой дорожки. Без них простот склеится в одну строку, и как разделять потом?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»