16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
|
||||||
1 | ||||||
Дерево каталогов10.07.2017, 17:03. Показов 1890. Ответов 11
Метки дерево папок (Все метки)
Из данной директории нужно сходить во все дочерние директории и в каждой из них выполнить действие. Как это сделать?
Добавлено через 28 минут Всем спасибо, я уже нашел решение. Оно таково:
0
|
10.07.2017, 17:03 | |
Ответы с готовыми решениями:
11
Удалить дерево каталогов и все что в них лежит, если таких каталогов нет во втором дерево каталогов Дерево каталогов дерево каталогов |
Супер-модератор
|
||||||
10.07.2017, 17:18 | 2 | |||||
А если сделать вот так:
1
|
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
|
|
11.07.2017, 16:09 [ТС] | 3 |
volvo, А вот и нужна. Он выдает мне имена папок, но как же я узнаю, какая внутри какой? Он выдает только имена, а не пути. Как ходить во вложенные директории?
0
|
Супер-модератор
|
|
11.07.2017, 16:15 | 4 |
Сообщение было отмечено kolay_ne как решение
Решение
Да ладно?
res[i].FullName тебе даст полные пути. И не надо никуда ходить, чего ты упертый такой (Python-а объелся, что-ли? Так не надо было к сахару привыкать, от него диабет развивается. Это смертельная болезнь, если что...)? С этим флагом тебе уже будут выданы все вложенные директории :Куда еще тебе надо ходить?
0
|
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
|
|
11.07.2017, 16:27 [ТС] | 5 |
volvo, А вот и нужна. Он выдает мне имена папок, но как же я узнаю, какая внутри какой? Он выдает только имена, а не пути. Как ходить во вложенные директории?
Как это куда? Мне нужно не получить список директорий, а сходить в них. Я в условии все написал. Так жизнь сложилась Есть такое ощущение Добавлено через 43 секунды А вообще - спасибо, то, что надо
0
|
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
|
|
12.07.2017, 08:40 | 6 |
Да, уж…
kolay_ne, рекурсия сдохнет, если наткнётся на зацикленные символические или жёсткие ссылки! К примеру: У вас системном диске компьютера (если ОС — винда и ещё в добавок свежая ;–) есть папка „Users“ и скрытая „Documents and Settings“ (которая ни что иное, как ссылка на первую). В них имеется папочка „All Users“ (она скрытая, если что ;-), которая ссылается на „C:\ProgramData“. Так вот, в ней, этой самой папке имеется рекурсивная „Application Data“. Если вы будете пытаться всё время зайти в эту „Application Data“, то будете всегда попадать в неё же, только уровень вложенности будет всё время расти! „C:\Users\All Users\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\…“
0
|
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
|
|
12.07.2017, 15:50 [ТС] | 7 |
JuriiMW, Разве существует ярлык на самого себя? Не знал... Проблема вот в чем, я в каждой из папок запускаю copy *.mp3 Так вот без рекурсии он скопировал на 5 файлов меньше, чем с рекурсией. Файлы исчисляются тысячей-другой, но что-то не так - факт... Поэтому я использую рекурсию и не лазаю в ApplicationData ;-)
0
|
Супер-модератор
|
||||||
12.07.2017, 17:48 | 8 | |||||
Сообщение было отмечено kolay_ne как решение
Решение
Так бы и говорил сразу. Ищи во всех вложенных папках файлы по нужной маске:
Фантастика - в следующем зале. Так не бывает. Если бы рекурсия была написана правильно - то она нашла бы ровно столько файлов, сколько найдет вышеприведенный код. Значит, рекурсия делает что-то лишнее, либо ты в своей реализации без рекурсии что-то недоделываешь. Опять же, нет полного кода - говорить не о чем.
0
|
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
|
|
12.07.2017, 20:15 [ТС] | 9 |
Похоже на правду, хотя это странно - его ведь проще написать, чем рекурсию... Такая элементарная - всего пара строчек... Но последний вариант выдал столько же вариантов, сколько рекурсия...
А вот и неправда, сказал: , то бишь копирую файлы из этих папок. Код вряд ли что даст, но, наверное, если я добавлю подробностей, вы подскажете мне еще что-нибудь полезное. Я прохожу по всем папочкам и копирую из всех mp3-файлы в другую папку на этом диске. Делаю я это, запуская командную строку с параметром /C. Я знаю, что в паскале есть какая-то встроенная штука, вроде &File.Copy что-то там. Если подскажете команду, буду благодарен. Если не подскажете, другой вопрос: когда у меня открывается пара тысяч командных строк, каждая из которых, не пытаясь оставить хоть капельку ЦП, копирует файлик. И это сильно отражается на работоспособности ноутбука, учитывая особенно то, что мой ноут сейчас мертв и я пользуюсь чужим слабеньким, хотя, я почти уверен, что мой ноут тоже не справился бы с этим. Итак, вопрос: как запускать копирования одно за другим, а не одновременно? JuriiMW, Путь C:\Users\All Users перебрасывает в C:\ProgramData, C:\ProgramData\Application Data не существует, если набрать сразу C:\Users\All Users\Application Data - Отказано в доступе. Это все Win10
0
|
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
|
|
13.07.2017, 06:20 | 10 |
Значит не хватает прав — а это уже не паскаль… Да и я, к примеру, не пользуюсь виндовым проводником.
0
|
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
|
|
13.07.2017, 07:38 [ТС] | 11 |
Блин, не хватает прав, потому что я пытаюсь получить доступ дальше ярлыка! AppData - не ярлык на сам себя, он ведев в ProgramData
0
|
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
|
|
13.07.2017, 08:11 [ТС] | 12 |
JuriiMW, Если вы про это, то командная строка склонна создавать бесконечные пути. Вернее, наверное, правильней сказать, что это проводник склонен их укорачивать. В линуксовском терминале - то же самое, переход по ярлыку не меняет путь на место хранения ярлыка
К стати, все переходы в cmd сделаны без прав админа, но при запуске explorer-а в этой папке - отказано в доступе. Но в том, что рекурсия повесится в этом месте, вы оказались правы: на var res := dir.GetDirectories - отказано в доступе (dir - C:\Users\All Users\Application Data)
0
|
13.07.2017, 08:11 | |
13.07.2017, 08:11 | |
Помогаю со студенческими работами здесь
12
Дерево каталогов Дерево каталогов Дерево каталогов Дерево каталогов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |