|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Добавить блоки строк из одного txt файла в другие txt файлы |
|
Любой язык - [решено] Добавить блоки строк из одного txt файла в другие txt файлы
|
Ветеран Сообщения: 539 |
Профиль | Отправить PM | Цитировать Здравствуйте. Не давно создавал тему, про добавление строк, а теперь необходимо добавлять не строки, а блоки строк..
В одном txt файле (назовем его общим) есть множество блоков строк, разделенных разделителем //================== Необходимо каждый из этих блоков строк добавить в нужный txt файл (рассортировать). Как определить, в какой txt файл добавить каждый блок строк из общего txt файла? Определять нужно по поиску. Например, общий файл general.txt имеет вид (на самом деле может быть не одна тысяча блоков строк): File Name.type: 0701start.avi Resolution: 640x480 Duration: 0:15:24 Filesize: 214Mb //================== File Name.type: 0894gsd.mp4 Resolution: 640x480 Duration: 0:31:24 Filesize: 239Mb Language: English Censorship: Yes Subtitle: No //================== File Name.type: start0154.wmv Resolution: 600x400 Duration: 0:49:14 Filesize: 839Mb Я указываю в скрипте поиск слова, и в какой txt добавить блок строк, если слово найдется: В результате выполнения скрипта должны появится 2 файла на диске C: video.txt File Name.type: 0894gsd.mp4 Resolution: 640x480 Duration: 0:31:24 Filesize: 239Mb Language: English Censorship: Yes Subtitle: No File Name.type: 0701start.avi Resolution: 640x480 Duration: 0:15:24 Filesize: 214Mb File Name.type: start0154.wmv Resolution: 600x400 Duration: 0:49:14 Filesize: 839Mb Файлы txt должны появиться, если их не было, но если они были, то блоки строк должны просто добавиться (в общем txt будет много блоков строк, которые должны уйти в один и тот же txt файл). |
|
Отправлено: 22:56, 02-07-2019 |
Crazy Сообщения: 1177
|
Профиль | Отправить PM | Цитировать Цитата Alexander_88:
powershell #requires -v 3.0 $map = 'd:\mapping.txt' $in = 'd:\test.txt' $del = "//==================`r?`n" gc $map|%{$template,$file=@(),@()}{ $tmp = ($_ -split " ?- ?").trim() $template += $tmp[0] $file += $tmp[1] } $arr = ((gc $in -raw) -split $del).trim("`r?`n") for ($i=0;$i -lt $template.length;$i++){ $arr|?{$_ -match $template[$i]}|out-file $file[$i] -app } ЗЫ Ни шаблоны, ни имена файлов, естественно, не должны содержать символа "-", иначе соответствие будет "сломано"... |
|
------- Отправлено: 08:30, 03-07-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 539
|
Профиль | Отправить PM | Цитировать Спасибо, работает. В поиске будут только буквы (без символов).
|
Отправлено: 10:32, 03-07-2019 | #3 |
Ветеран Сообщения: 539
|
Профиль | Отправить PM | Цитировать Подскажите, а как сделать, чтобы информация добавлялась в ansi
Я проверил, все работало на тест файлах (которые скрипт сам создал). Потом начал пробовать с рабочим txt, в него добавляется информация в одну строку.. этот txt я создавал давно, просто из windows "создать блокнот". Информация добавляется вроде как в юникоде, из - за этого все добавляется в одну строку. Можно конечно мой txt перекодировать в юникод, только дальше этот txt также уходит на обработку нескольких скриптов, поэтому неизвестно будет ли как раньше все работать, если я перекодирую его. Нельзя сделать, чтобы информация добавлялась для txt как она есть, а не в одну строку? |
Отправлено: 16:33, 05-07-2019 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Alexander_88, действуйте как обычно — упаковываете Ваш файл/файлы в архив, каковой прикладываете к сообщению, або на обменник (например, DropMeFiles), а ссылку — сюда.
|
|
Отправлено: 17:32, 05-07-2019 | #5 |
Ветеран Сообщения: 539
|
Профиль | Отправить PM | Цитировать data - общий txt файл.
После выполнения скрипта видно, что данные добавляются в одну строку (в файлы fileslink, imagelink, har) #requires -v 3.0 $map = 'mapping.txt' $in = 'data.txt' $del = "//================`r?`n" gc $map|%{$template,$file=@(),@()}{ $tmp = ($_ -split " ?- ?").trim() $template += $tmp[0] $file += $tmp[1] } $arr = ((gc $in -raw) -split $del).trim("`r?`n") for ($i=0;$i -lt $template.length;$i++){ $arr|?{$_ -match $template[$i]}|out-file $file[$i] -app } |
Отправлено: 17:55, 05-07-2019 | #6 |
Crazy Сообщения: 1177
|
Профиль | Отправить PM | Цитировать Цитата Alexander_88:
Вот, настраивайте нужную кодировку: #requires -v 3.0 $map = 'd:\mapping.txt' $in = 'd:\test.txt' $del = "//==================`r?`n" $encin = 'default' $encout = 'default' $encmap = 'default' gc $map -enc $encmap|%{$template,$file=@(),@()}{ $tmp = ($_ -split " ?- ?").trim() $template += $tmp[0] $file += $tmp[1] } $arr = ((gc $in -raw -enc $encin) -split $del).trim("`r?`n") for ($i=0;$i -lt $template.length;$i++){ $arr|?{$_ -match $template[$i]}|out-file $file[$i] -app -enc $encout } |
|
------- Отправлено: 19:16, 05-07-2019 | #7 |
Ветеран Сообщения: 539
|
Профиль | Отправить PM | Цитировать Спасибо, работает
|
Отправлено: 00:15, 06-07-2019 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Добавить строки из одного txt файла в другие txt файлы | Alexander_88 | Скриптовые языки администрирования Windows | 4 | 02-07-2019 20:29 | |
Любой язык - [решено] Разделение одного txt файла на несколько txt файлов | Alexander_88 | Скриптовые языки администрирования Windows | 3 | 25-11-2018 23:50 | |
CMD/BAT - [решено] Печать последних 10 строк из txt файла. | valen | Скриптовые языки администрирования Windows | 9 | 01-02-2016 11:31 | |
CMD/BAT - Скрипт, для чтения нужных строк из txt файла в переменную | mr.R | Скриптовые языки администрирования Windows | 1 | 26-07-2012 12:59 | |
[решено] Вставить строчку из одного txt в оределённое место другого txt | ZeroCrash | AutoIt | 7 | 13-07-2009 07:35 |
|