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

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

Ответить
Настройки темы
CMD/BAT - Разбить тхт файл не только по строкам, но и по папкам

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


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

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


В замечательной теме раскрывается вопрос, как разбить большой тхт файл на много мелких по кол-ву строк
Моя задача чуть шире. Есть файл на 10 млн строк. Мне нужно получить 100 папок, в каждой по 100 файлов тхт, в каждом файле по 1000 строк из стартового файла.
Названия папок 1,2,3,4,5,...,100
Названия файлов 1.txt, 2.txt, 3.txt, ..., 100.txt

Кто-нибудь может помочь с этой непосильной для меня задачей?

Отправлено: 15:15, 11-07-2018

 

Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Busla:
результирующий файл формируется в памяти и за раз пишется инструкцией set-content »
И что? Я говорю о:
Код: Выделить весь код
gc text.txt
и
Код: Выделить весь код
gc text.txt -readcount 1000
В первом случае, по конвейеру будет передаваться первая строка только после помещения всего файла в память (что может привести к достаточно длительному ожиданию, если не зависанию, при достаточно большом файле). Во втором случае, первая строка (вернее блок строк) передается после помещения в память некоторого количества строк -readcount <int64>, что значительно ускоряет процесс... в общем, попробуйте, тогда станет понятно в чем разница.

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


Последний раз редактировалось YuS_2, 11-07-2018 в 20:43.


Отправлено: 20:31, 11-07-2018 | #11



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

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


Ветеран


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

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


Цитата Busla:
зачем? »
Затем, что не поместится.

Отправлено: 20:44, 11-07-2018 | #12


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


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

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


Все отлично в примере на павершел, один только нюанс - пустая строчка в самом конце, но я ее регуляркой почикаю) Спасибо!

Отправлено: 22:00, 11-07-2018 | #13


Ветеран


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

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


YuS_2, неверно
по умолчанию readcount равно единице, чтобы прочитать весь файл за раз нужно принудительно выставить нуль

Вы смешали в одно "буфер чтения" и размер выходного файла. Всё это "значительно ускоряет процесс" пока файлы крохотные. А как только понадобится напилить файл на куски по несколько ГБ (например, чтобы на DVD записать) - так сразу скрипту и поплохеет.

Отправлено: 22:10, 11-07-2018 | #14


Ветеран


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

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


Busla, YuS_2, в документации сказано, что:
Цитата:
-ReadCount <Int64>
Specifies how many lines of content are sent through the pipeline at a time. The default value is 1. A value of 0 (zero) sends all of the content at one time.

This parameter does not change the content displayed, but it does affect the time it takes to display the content. As the value of ReadCount increases, the time it takes to return the first line increases, but the total time for the operation decreases. This can make a perceptible difference in very large items.
но ничего не сказано про собственно само чтение. Как с этим обстоит дело?

Отправлено: 22:23, 11-07-2018 | #15


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


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

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


А нет, не получается, регуляркой эту строку не видно, удалить массово через notepad++ не получается. Возможно ли переделать скрипт, чтобы он не делал 1001-ю пустую строку?
Заранее большое спасибо!

Отправлено: 22:38, 11-07-2018 | #16


Ветеран


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

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


Abricosio, там нет «пустой строки»:



где Вы её нашли?!

Отправлено: 22:45, 11-07-2018 | #17


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


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

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


Странно, у меня во всех файлах последняя строка пустая, 1001я. Проверял в notepad++ и обычном тхт редакторе

Отправлено: 23:04, 11-07-2018 | #18


Ветеран


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

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


Abricosio, это:



не «пустая строка».

Пустая строка — вот:



Если Вам категорически нужно, чтобы последняя строка не завершалась символами конца строки:



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

Отправлено: 00:32, 12-07-2018 | #19


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Busla:
чтобы прочитать весь файл за раз »
Код: Выделить весь код
gc text.txt -raw
Цитата Busla:
Вы смешали в одно "буфер чтения" и размер выходного файла. »
Я? Где?
Лично я говорил о том, что вредно помещать весь файл (при условии, что он достаточно большой) в память, чтобы производить с ним дальнейшие манипуляции. О размерах выходного файла заговорил ты, я ничего об этом не писал.

Цитата Busla:
А как только понадобится напилить файл на куски по несколько ГБ (например, чтобы на DVD записать) - так сразу скрипту и поплохеет. »
Чтобы поменьше теоретизировать, предлагаю провести простой эксперимент:
1. Создай текстовый файл (UTF8, хотя это неважно), в 10000000 строк, с одним символом в каждой строке. Размер у него получится не сильно большим (чуть больше 28Мб), но достаточным для эксперимента. Возможно, конфигурация компьютера будет влиять на результат, но это можно "поправить" увеличением количества строк.
2.
a)
Код: Выделить весь код
gc text.txt -read 5000000|set-content text-out.txt
b)
Код: Выделить весь код
gc text.txt|set-content text-out.txt
3. Приведи здесь результат эксперимента.

Мои результаты:
a) TotalSeconds : 6,9191207
b) Неадекватное потребление физ.памяти до 3,5Гб и более процессом powershell, нагрузка процессора в 50% и более, плюс подвисания интерфейса windows. Терпения, чтобы дождаться окончания процесса (если это реально), у меня не хватило. В общем, плохеет не только скрипту и размер у файла не очень-то огромный...

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


Отправлено: 05:40, 12-07-2018 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] разбить файл на много файлов по шаблону и каждый файл положить в папку Mezolick Скриптовые языки администрирования Windows 3 03-02-2017 08:38
CMD/BAT - [решено] разбить по строкам txt shadowbat Скриптовые языки администрирования Windows 54 10-11-2015 16:20
CMD/BAT - [решено] Разбить txt файл по строкам и файлам Acred Скриптовые языки администрирования Windows 9 12-10-2015 18:08
Router - [решено] Есть подключение по Wi-Fi, но интернет - только по кабелю. roniro Сетевое оборудование 7 17-09-2013 13:54
Router - [решено] Подключение к роутеру по Wi-Fi есть, но интернет-только по кабелю. roniro Сетевое оборудование 4 06-10-2012 19:20




 
Переход