|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удалить в текстовом файле все строки кроме одной нужной. |
|
CMD/BAT - [решено] Удалить в текстовом файле все строки кроме одной нужной.
|
Старожил Сообщения: 286 |
Добрый.
Есть однотипные файлы txt. В них строка №2. Очень длинная. Явно превышающая стандартное ограничение. find и findstr пишут "длинная строка" txt во вложении. Начинается нужная строка всегда с "audioContent". Нужно: 1) скопировать строку №2 из source.txt в out.txt. или в source.txt удалить ВСЕ строки кроме №2. В идеале, нужно решение без привязки к искомым словам, а просто к номеру строк. 2) В результирующем txt удалить пробелы, слово "audioContent" и (")двойные кавычки(") |
|
Отправлено: 16:11, 16-12-2020 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
------- Отправлено: 21:38, 17-12-2020 | #31 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать YuS_2, спасибо, ясно. В этом случае мы не видим промежуточный текст.
|
Отправлено: 22:55, 17-12-2020 | #32 |
Старожил Сообщения: 286
|
Профиль | Отправить PM | Цитировать Спасибо всем кто отозвался!
Впринципе результат удовлетворительный и тему можно помечать как решенную, но все же попрошу помощи в оптимизации "написанного"). А именно: (опишу процесс, чтобы было более понятно) Все делается в PS (GUI для работы с google text-to-speech): 1) через окно пишем нужные параметры в text.json для последующего запроса на сервак. 2) Шлем запрос на сервак, ответ сервака пишем в source.txt здесь таймаут (ждем пока пишется ответ с сервака) 3) Корректируем source.txt как надо и пишем результат в out.txt здесь таймаут (ждем обработки п.3) 4) Еще корректируем нюансы и пишем полученное в out1.txt здесь таймаут (ждем отработки п.4) 5) Перекодируем out1.txt в конечный файл mp3. Нужно как-то убрать таймауты... А вот как- ума не приложу. Поясню - тестил на небольших статьях на 2 минуты, поставил после п2 таймаут в 10 сек, работает корректно. Но если этот текст будет минут на 15-20, то уже 10сек таймаута будет мало..п.3 начнется раньше, чем будет записан source.txt.... и будет ошибка на выходе. Надеюсь понятно объяснил...( p.s. крутится идея как-то привзязаться к наличию и размеру txt файлов (например, если source.txt создан и размер его больше чем 0 байт - тогда переходим к следующему шагу, ну или как-то так). Нужен универсальный вариант, без подбора таймаутов вручную, чтобы работало с любой длинной текста. сам скрипт
echo off | Out-Null
$p='E:\11\bin' $s='E:\11' echo "" echo "" echo ("=================================================Google Text-To=Speech=================================================") echo "" timeout /t 2 | Out-Null echo ("1) Скачиваем файл...") echo "" start $p/hidec.exe download.bat timeout /t 10 | Out-Null echo ("2) Выделяем код...") echo "" findstr /I "audioContent" $p\source.txt > $p\out.txt del $p\source.txt timeout /t 2 | Out-Null echo ("3) Обработываем полученный код...") echo "" start $p/hidec.exe text_mod.bat timeout /t 5 | Out-Null echo ("4) Конвертируем в mp3...") echo "" echo "" & $p\b64.exe -d out1.txt $s\audio\sound.mp3 del $p\out1.txt echo ("=========================================================Готово!================================== ====================") timeout /t 2 | Out-Null explorer $s\audio exit |
Последний раз редактировалось 9119, 18-12-2020 в 10:39. Отправлено: 02:45, 18-12-2020 | #33 |
Ветеран Сообщения: 1758
|
Цитата 9119:
using namespace System.Speech using namespace System.Speech.Synthesis param ( [Parameter (Mandatory = $false, ValueFromPipeline = $true)] [string] $text = $(Get-Clipboard | Out-String), <# Надо подключать дополнительные "голоса", через реестр, например Павла. [Parameter(Mandatory = $false)] [VoiceGender] $sex = 'female', #> [Parameter(Mandatory = $false)] [string] $culture = 'ru-RU' ) if ($PSEdition -eq 'Core') { Write-Warning 'Not Working on PowerShell 7'; return } $speaker = [SpeechSynthesizer]::new() if ($culture -eq 'en-US') { $speaker.SelectVoice('Microsoft Zira Desktop') $speaker.Rate = -1 } else { $speaker.SelectVoice('Microsoft Irina Desktop') $speaker.Rate = 1 } $speaker.SetOutputToWaveFile("$HOME\Desktop\out.wav") $speaker.Speak($text) Start-Sleep -Milliseconds 1500 $speaker.Dispose() |
|
Последний раз редактировалось Foreigner, 18-12-2020 в 04:47. Отправлено: 04:37, 18-12-2020 | #34 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
------- Отправлено: 07:51, 18-12-2020 | #35 |
Старожил Сообщения: 286
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
Просто сам додумать не могу как избавится от таймаутов... |
|
Последний раз редактировалось 9119, 18-12-2020 в 10:46. Отправлено: 09:49, 18-12-2020 | #36 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
![]() |
|
Отправлено: 14:43, 18-12-2020 | #37 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Но меня опять терзают смутные сомнения ![]() ![]() |
|
------- Отправлено: 20:42, 18-12-2020 | #38 |
Старожил Сообщения: 286
|
Профиль | Отправить PM | Цитировать Помогите офоормить правильно для PS:
помесь ps, cmd и ерунды)
проверяем наличие в папке файла source.txt, и переходим к выполнению команд, если файла там нет - повторяем поиск...и циклим поиск пока файл там не появится. В идеале чтобы проверяло не только наличие файла, но и его размер, чтобы он был >0 |
Последний раз редактировалось 9119, 18-12-2020 в 21:24. Отправлено: 21:15, 18-12-2020 | #39 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
![]() |
|
Отправлено: 22:00, 18-12-2020 | #40 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Отсортировать строки в текстовом файле | blackeangel | Программирование и базы данных | 4 | 10-01-2017 11:31 | |
CMD/BAT - [решено] удалить пусты строки в текстовом файле | warkdimka | Скриптовые языки администрирования Windows | 8 | 19-02-2016 15:31 | |
CMD/BAT - [решено] удалить все пустые строки, кроме самой последней | Alexander_88 | Скриптовые языки администрирования Windows | 8 | 05-01-2015 12:43 | |
[решено] Как удалить строки в текстовом файле при отсутсвии файла в опрелеленном месте? | Pozia | AutoIt | 23 | 14-05-2009 21:41 | |
[решено] Работа из командной строки | Убрать все пробелы в текстовом файле | Greyman | Хочу все знать | 11 | 17-06-2007 22:44 |
|