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

Ответить
 • Просмотры: 1
Аватара пользователя
Iska

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

Сообщение Iska »

Цитата Busla:



результирующий файл формируется в памяти и за раз пишется инструкцией set-content
CMD/BAT - Разбить тхт файл не только по строкам, но и по папкам




И что? Я говорю о:



Код:

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

gc text.txt

и



Код:

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

gc text.txt -readcount 1000

В первом случае, по конвейеру будет передаваться первая строка только после помещения всего файла в память (что может привести к достаточно длительному ожиданию, если не зависанию, при достаточно большом файле). Во втором случае, первая строка (вернее блок строк) передается после помещения в память некоторого количества строк -readcount , что значительно ускоряет процесс... в общем, попробуйте, тогда станет понятно в чем разница.
Аватара пользователя
Iska

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

Сообщение Iska »

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

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

Сообщение Abricosio »

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

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

Сообщение Abricosio »

YuS_2, неверно

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



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

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

Сообщение Iska »

Busla, YuS_2, в документации сказано, что:


Цитата:



-ReadCount

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.



но ничего не сказано про собственно само чтение. Как с этим обстоит дело?
Аватара пользователя
Abricosio

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

Сообщение Abricosio »

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

Заранее большое спасибо!
Аватара пользователя
Abricosio

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

Сообщение Abricosio »

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



Изображение



где Вы её нашли?!
Аватара пользователя
Iska

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

Сообщение Iska »

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

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

Сообщение Abricosio »

Цитата Busla:



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






Код:

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

gc text.txt -raw


Цитата Busla:



Вы смешали в одно "буфер чтения" и размер выходного файла.
CMD/BAT - Разбить тхт файл не только по строкам, но и по папкам




Я? Где? Изображение

Лично я говорил о том, что вредно помещать весь файл (при условии, что он достаточно большой) в память, чтобы производить с ним дальнейшие манипуляции. О размерах выходного файла заговорил ты, я ничего об этом не писал.




Цитата Busla:



А как только понадобится напилить файл на куски по несколько ГБ (например, чтобы на DVD записать) - так сразу скрипту и поплохеет.
CMD/BAT - Разбить тхт файл не только по строкам, но и по папкам




Чтобы поменьше теоретизировать, предлагаю провести простой эксперимент:

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. Терпения, чтобы дождаться окончания процесса (если это реально), у меня не хватило. В общем, плохеет не только скрипту и размер у файла не очень-то огромный... Изображение
Ответить

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