С Новым годом! Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 19.12.2017
Сообщений: 37

Работа с большим массивом файлов

19.12.2017, 12:30. Показов 4103. Ответов 82
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задача удалить Файлы из папки по списку txt файла. Пробовал реализовать данную задачу при помощи cmd, но как я пологаю больше 50000 строк он не читает.
Если более предметно: в папке лежит 4 500 000 файлов и есть собранный список с 4 000 000 строками. Нужно чтобы проооамма по названию вычисляла файл и удаляла его из папки.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.12.2017, 12:30
Ответы с готовыми решениями:

Работа с большим массивом
Всем привет. С шарпах я почти не бум-бум и по этому задаю сей смешной и простой вопрос. Как мне засунуть эти числа в двумерный массив? ...

Работа с большим массивом xml
В рабочих целях появилась необходимость произвести сверку xml файлов со списком. В списке первоначальном 4,5 млн строк с записями, файлов...

Некоторые действия над не большим массивом
Нужна помощь в написании программы, которая выполняет ряд действий над массивом. Начало я написал, как вы можете увидеть ниже, и так нужно...

82
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
19.12.2017, 13:25
Цитата Сообщение от maksimkaa Посмотреть сообщение
в папке лежит 4 500 000 файлов
Все в одной папке без подкаталогов?

Цитата Сообщение от maksimkaa Посмотреть сообщение
есть собранный список с 4 000 000 строками. Нужно чтобы проооамма по названию вычисляла файл и удаляла его из папки.
Что именно хранится в списке? Имя файла с расширением? Каждое с новой строки?
0
0 / 0 / 0
Регистрация: 19.12.2017
Сообщений: 37
19.12.2017, 13:33  [ТС]
KDE777, 1. Все файлы лежат в одной папке без подкаталогов (список и сами файлы).
2. В списке имена с названием и расширением файла (1.xml) и каждое наименование с новой строки.
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
19.12.2017, 13:50
maksimkaa, Насколько я вижу тут есть два варианта
1-ый через get-item и ErrorAction
Что-то типа
PowerShell
1
2
3
$PATH="D:\security_and_cleaner"
CD $PATH
gc ".\SPISOK.txt"|%{gi $_ -ea silentlyContinue}|?{!($_.psiscontainer)}|ri -whatif
И 2-ой с использованием compare-object
Что-то типа
PowerShell
1
2
3
$PATH="D:\security_and_cleaner"
CD $PATH
 (compare-object ((gci).name) (gc ".\SPISOK.txt") -IncludeEqual |?{$_.sideIndicator -eq "=="}).inputobject|ri -whatif

Однако со столь большими объемами я не работал, нужно тестить
0
0 / 0 / 0
Регистрация: 19.12.2017
Сообщений: 37
19.12.2017, 13:53  [ТС]
v_svitere,
В третьей строчке где список, нужно полный путь указать?
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
19.12.2017, 13:54
maksimkaa, Да.
Либо если он лежит, в директории с файлами, то можно не указывать
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
19.12.2017, 14:07
Цитата Сообщение от v_svitere Посмотреть сообщение
Однако со столь большими объемами я не работал, нужно тестить
Цитата Сообщение от maksimkaa Посмотреть сообщение
в папке лежит 4 500 000 файлов и есть собранный список с 4 000 000 строками
Список достаточно большой, поэтому предложу решение не занимающее много памяти + выполняющее параллельное удаление файлов. Число для ReadCount подберите сами, оно означает по сколько строчек будет считываться из списка и соответственно одновременно удаляться. Т.е. нужно учитывать IOPS вашего диска...

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
WorkFlow RemoveItem ($list)
{
    foreach -parallel ($line in $list)
    {
        Remove-Item -Path "C:\Temp\_Files\$line" -Force -EA SilentlyContinue
    }
 
}
 
foreach ($txt_block in Get-Content -Path C:\Temp\file_list.txt -ReadCount 1000)
{
    RemoveItem -list $txt_block
}
1
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
19.12.2017, 14:09
KDE777, Хороший вариант
0
0 / 0 / 0
Регистрация: 19.12.2017
Сообщений: 37
19.12.2017, 14:14  [ТС]
KDE777, В 5 строке где line что нужно указывать?
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
19.12.2017, 14:17
Цитата Сообщение от maksimkaa Посмотреть сообщение
В 5 строке где line что нужно указывать?
Вместо "C:\Temp\_Files" укажите папку, из которой следует удалять файлы из списка "C:\Temp\file_list.txt"
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
19.12.2017, 14:17
Да не в упрек будет сказано)
Вот такие конструкции немного режут глаз
PowerShell
1
"C:\Temp\_Files\$line"
Есть же join-path
0
0 / 0 / 0
Регистрация: 19.12.2017
Сообщений: 37
19.12.2017, 14:22  [ТС]
KDE777, Все три кода при запуске дропаются.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
19.12.2017, 14:32
Цитата Сообщение от v_svitere Посмотреть сообщение
Есть же join-path
Ага, есть. Но у нас речь о 4 000 0000 строчек.

Кликните здесь для просмотра всего текста
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(gc C:\Temp\file_list.txt).Count
 
Measure-Command -Expression {
    foreach ($line in Get-Content -Path C:\Temp\file_list.txt)
    {    
        $path = "C:\Temp\_Files\$line"
    }
} | fl Totalseconds
 
Measure-Command -Expression {
    foreach ($line in Get-Content -Path C:\Temp\file_list.txt)
    {    
        $path = Join-Path -Path "C:\Temp\_Files" -ChildPath $line
    }
} | fl Totalseconds


Code
1
2
3
4
20289
 
TotalSeconds : 0,3203688
TotalSeconds : 2,4494928
Итого на 20К строчках - разница почти в 8 раз...

Цитата Сообщение от maksimkaa Посмотреть сообщение
Все три кода при запуске дропаются.
Завершается ошибкой? Ну так покажите, что это за ошибки.
1
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
19.12.2017, 14:38
KDE777, Понял
0
0 / 0 / 0
Регистрация: 19.12.2017
Сообщений: 37
19.12.2017, 14:38  [ТС]
KDE777, Запускается и сразу закрывается.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
19.12.2017, 14:50
Цитата Сообщение от maksimkaa Посмотреть сообщение
Запускается и сразу закрывается.
Откройте PowerShell_ISE, скопируйте туда скрипт и запустите выполнение в этой оболочке.

И лучше сначала сделать тестовую папку и отработать выполнение на ней, прежде чем запускать обработку 4M файлов. Например, вот так можно создать список файлов для удаления из тестовой папки (нужен PowerShell 3 или выше):

PowerShell
1
(ls C:\Temp\_Files -File).Name | sc C:\Temp\file_list.txt
0
0 / 0 / 0
Регистрация: 19.12.2017
Сообщений: 37
19.12.2017, 15:03  [ТС]
KDE777, В прошлом скрипте вылезло много ошибок, в этом "Не удается найти параметр, соответствующий имени параметра File".
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
19.12.2017, 15:09
maksimkaa,
(нужен PowerShell 3 или выше)
Либо обновляйте, либо используйте по-старинке PSisContainer
PowerShell
1
(ls C:\Temp\_Files|?{!$_.psiscontainer}).Name | sc C:\Temp\file_list.txt
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
19.12.2017, 15:15
Цитата Сообщение от maksimkaa Посмотреть сообщение
В прошлом скрипте вылезло много ошибок
И я должен угадывать их содержание? Скопируйте эти сообщения и покажите их здесь.

Цитата Сообщение от v_svitere Посмотреть сообщение
Либо обновляйте, либо используйте по-старинке PSisContainer
Для моего варианта нужно обязательно обновлять PS, т.к. Workflow и Foreach –parallel в PS 2 нет...
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
19.12.2017, 15:19
И я должен угадывать их содержание? Скопируйте эти сообщения и покажите их здесь.
Так форум телепатов, же... Разве нет?


Для моего варианта нужно обязательно обновлять PS
Это да, но предположу, что подобный подход можно реализовать и на 2.0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2017, 15:19
Помогаю со студенческими работами здесь

Vuejs / vuex с большим массивом данных
Всем привет, Разбираясь с vuex(laravel 5.7 / Vuejs 2.6 / "vuex": "^3.1.0"), не нашел в мануалах ответов на некоторые вопросы и...

Хелп зависает прога с большим массивом, STACK_SIZE в CoIDE
Здравствуйте! Для теста написал программу мигающую светодиодом, она работала нормально но когда попытался создать массив с 200...

Vector или new при работе с большим массивом данных?
Подскажите, что лучше использовать (с точки зрения быстродействия) при работе с большим массивом данных - vector или динамический массив?...

Нарушение прав доступа при чтении при работе с большим массивом
Здравствуйте. Пытаюсь заполнить большой массив, вроде правильно объявил его, но на разных итерациях (от i=92106 и выше ...) появляется...

"Параллельные" вычисления над большим массивом данных
Есть массив данных (под 500к), над ними нужно провести вычисления. Вычисления не самые быстрые, и я хотел бы воспользоваться пулом потоков....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru