Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Добавить блоки строк из одного txt файла в другие txt файлы

Ответить
Настройки темы
Любой язык - [решено] Добавить блоки строк из одного txt файла в другие txt файлы

Ветеран


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

Профиль | Отправить 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 добавить блок строк, если слово найдется:

Код: Выделить весь код
"gsd" - C:\video.txt
"start" - C:\clip.txt

В результате выполнения скрипта должны появится 2 файла на диске C:

video.txt
Код: Выделить весь код
File Name.type:  0894gsd.mp4
Resolution:  640x480 
Duration:  0:31:24
Filesize:  239Mb
Language: English
Censorship: Yes
Subtitle: No
clip.txt
Код: Выделить весь код
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

 

Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Alexander_88:
В одном txt файле (назовем его общим) есть множество блоков строк, разделенных разделителем //================== »
насколько велико множество?

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
}
где, формат файла mapping.txt
Код: Выделить весь код
gsd - D:\video.txt
start - D:\clip.txt
ЗЫ Ни шаблоны, ни имена файлов, естественно, не должны содержать символа "-", иначе соответствие будет "сломано"...

-------
scio me nihil scire. Ѫ

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

Отправлено: 08:30, 03-07-2019 | #2



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

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


Ветеран


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

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


Спасибо, работает. В поиске будут только буквы (без символов).

Отправлено: 10:32, 03-07-2019 | #3


Ветеран


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

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


Подскажите, а как сделать, чтобы информация добавлялась в ansi
Я проверил, все работало на тест файлах (которые скрипт сам создал). Потом начал пробовать с рабочим txt, в него добавляется информация в одну строку.. этот txt я создавал давно, просто из windows "создать блокнот". Информация добавляется вроде как в юникоде, из - за этого все добавляется в одну строку. Можно конечно мой txt перекодировать в юникод, только дальше этот txt также уходит на обработку нескольких скриптов, поэтому неизвестно будет ли как раньше все работать, если я перекодирую его.
Нельзя сделать, чтобы информация добавлялась для txt как она есть, а не в одну строку?

Отправлено: 16:33, 05-07-2019 | #4


Ветеран


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

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


Alexander_88, действуйте как обычно — упаковываете Ваш файл/файлы в архив, каковой прикладываете к сообщению, або на обменник (например, DropMeFiles), а ссылку — сюда.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:32, 05-07-2019 | #5


Ветеран


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

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


Вложения
Тип файла: zip mapping.zip
(1.1 Kb, 6 просмотров)

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


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Alexander_88:
как сделать, чтобы информация добавлялась в ansi »
Только добавлялась или считывалась тоже?
Вот, настраивайте нужную кодировку:
Код: Выделить весь код
#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
}

-------
scio me nihil scire. Ѫ

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

Отправлено: 19:16, 05-07-2019 | #7


Ветеран


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

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


Спасибо, работает

Отправлено: 00:15, 06-07-2019 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Добавить блоки строк из одного txt файла в другие txt файлы

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Добавить строки из одного 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




 
Переход