Страница 4 из 8
Добавлено: Ср июл 27, 2011 19:04
shveicar
Не знаю, первый или последний, но для моей задачи подошёл вот
этот пусть будет№1, а вот
этот пусть будет №2, работает именно так как я описываю. Отсюда вывод: (каждому инструменту - свое назначение).
Добавлено: Ср июл 27, 2011 19:14
Flasher
С учётом приведённых примеров могу утверждать, что в моём скрипте ругани быть не должно.
Поиск папок, содержащих только 1 непустую папку
Добавлено: Сб янв 14, 2012 13:39
Darkenlightener
Здравствуйте!
Обращаюсь к корифеям с довольно нетривиальным вопросом (во всяком случае, поиск по форуму мне не помог).
Я привожу в порядок свою электронную библиотеку, в ней много папок, полученных путем распаковки скачанных архивов. Часто получается так, что в папке находится 1 вложенная папка, а уже в ней лежат файлы и/или папки. Мне приходится вручную копировать файлы и/или папки из вложенной папки в основную, а вложенную (опустевшую) папку удалять. Вопрос: как сделать так, чтобы поиск находил все папки, в которых есть 1 вложенная папка (непустая), но нет файлов на том же уровне вложенности, что и эта папка? Скриншоты приложить не удалось из-за того, что я новичок, поэтому опишу их словами

:
Папки, содержимое которых меня устраивает — несколько непустых папок или непустые папки + файлы на конкретном уровне вложенности.
Папки, содержимое которых меня не устраивает — только 1 вложенная непустая папка на конкретном уровне вложенности (в ней могут быть папки с файлвми или просто файлы, это непринципиально).
Я пробовал делать это с помощью плагина DirSizeCalc, но не удалось. Подозреваю, что проблему можно решить, если при поиске задать значение одинаковости уровня вложенности для наличия папки и отсутствия файлов, т.е. Ditectory Count = 1 + File Count = 0 + один и тот же уровень вложенности. Однако, насколько я понимаю, сейчас в Тотале при поиске можно задать только уровень вложенности, а это не подходит, поскольку меня интересует не глубина поиска, а уровни, на которых есть непустая папка и нет файлов.
Если кто-нибудь сможет помочь, буду очень благодарен, поскольку проблема для меня довольно насущная.
[mod="Avada"]Всё последующее объединено с текущей темой с учётом близости поставленных задач.[/mod]
Добавлено: Сб янв 14, 2012 13:50
Flasher
Глубину вложенности можно задавать в filex.
Хотя это не поможет, проще один из имеющихся скриптов перемещения на уровень вверх подлатать.
Добавлено: Сб янв 14, 2012 14:26
Avada
Darkenlightener
В рамках функциональности известных мне плагинов задача, ИМХО, не решается. Слишком много граничных условий, между которыми не удаётся выстроить нужную взаимосвязь.
Flasher писал(а):Хотя это не поможет, проще один из имеющихся скриптов перемещения на уровень вверх подлатать.
Именно так.
И вообще это тема не для "Общих вопросов".
Переношу в "Автоматизацию".
Добавлено: Сб янв 14, 2012 14:28
Darkenlightener
Flasher
Вот именно, глубина вложенности меня здесь вообще не интересует.
Avada
Мне надо, чтобы поиск осуществлялся в пределах каждого уровня и они между собой не смешивались при поиске, т.е. проверяется первый уровень на Ditectory Count = 1 + File Count = 0, потом второй (первый при этом не трогаем), третий (первый и второй пропускаем), как-то так. Вот, в принципе, и вся взаимосвязь, по-моему, не так уж много условий
В скриптах я, к сожалению, не Копенгаген

Добавлено: Сб янв 14, 2012 14:44
Flasher
Darkenlightener писал(а):чтобы поиск осуществлялся в пределах каждого уровня и они между собой не смешивались при поиске
А какой смысл в рекурсивном нахождении папок, если требуется перемещать наверх содержимое одиноких подкаталогов первого уровня? Это же каша получится, а не полноценные распакованные "образы". Или есть уверенность, что в структуре имеющихся папок с рядом лежащими файлами нет одиноких подкаталогов без близлежащих файлов?
Добавлено: Сб янв 14, 2012 16:39
Darkenlightener
Flasher
Честно говоря, идею вообще не уловил(( Рекурсию я себе слабо представляю))
Если говорить о том, что мне нужно в идеале, то надо, чтобы в каждой папке на любом уровне были или непустые папки + файлы или только файлы. Как это по-научному будет, не знаю, к сожалению. "Нутром чувствую, что литр, а как математически выразить — не знаю!" (с)
В идеале хотелось бы добиваться этого автоматически, но если это слишком сложно, то хотя бы находить папки только с 1 вложенной папкой на каждом уровне, чтобы потом вручную их обрабатывать.
Если непонятно, откуда у меня берутся такие папки, объясняю, что они получаются при массовой распаковке rar и zip архивов по принципу "извлечь каждый архив в отдельную папку". Если в архив упакована одна папка, то на выходе получается папка\папка\файлы вместо нужного мне папка\файлы
Добавлено: Сб янв 14, 2012 16:45
Flasher
Darkenlightener
Никакой новой информации. Я вообще-то вопросы задал, а не идеей поделился.
Рекурсивный поиск - это поиск без ограничений глубины.
Я пишу о том, что в любой такой папке, воссозданной из распакованного архива могут находиться на последующих глубинах одиночные папки без файлов рядом. А дальше отвечаем на мой вопрос.
Автоматизировать можно только исходя из ответа на него.
Добавлено: Сб янв 14, 2012 16:52
Darkenlightener
Flasher писал(а):Никакой новой информации. Я вообще-то вопросы задал, а не идеей поделился.
Я просто вопрос не понял, потому так ответил
Flasher писал(а):
Я пишу о том, что в любой такой папке, воссозданной из распакованного архива могут находиться на последующих глубинах одиночные папки без файлов рядом.
Их тоже надо найти. Надо найти все такие папки на всех уровнях и стянуть наверх до вида папка\папка+папка+(...)+папка+файлы или папка\папка+папка+(...)+папка. Или, хотя бы, просто найти. Все вложенные папки должны выглядеть так же. Это ответ на вопрос?
Добавлено: Сб янв 14, 2012 16:56
Flasher
Darkenlightener писал(а):Это ответ на вопрос?
Нет. Я вообще не понял логику записи. Исходна цель - перемещение + удаление опустошаемых папок, а не поиск, так? Зачем искать на любой глубине, если это не стыкуется с исходной целью?
Добавлено: Сб янв 14, 2012 17:02
Darkenlightener
Flasher
Исходная цель была именно поиск таких папок для удаления вручную, т.к. я не предполагал, что еще и перемещать можно автоматически. Но если можно организовать автоматическое перемещение, то поиск мне не нужен, вы правы.
Добавлено: Сб янв 14, 2012 17:15
Flasher
Darkenlightener писал(а):я не предполагал, что еще и перемещать можно автоматически
А это ни о чём не говорит?:
Flasher писал(а):проще один из имеющихся скриптов перемещения на уровень вверх подлатать
Я вижу пока следующие пути решения вопроса:
1) Поскольку при распаковке имя директории соответвует базовому имени архива, можно сравнивать её имя с именем находящейся внутри неё директории, допустим, по каким-то первым символам, и если они совпадают, то содержимое должно перемещаться наверх. Тут же можно проверять наличии файлов с определённым расширением.
2) Распаковать все архивы заново с присвоением одинакового комментария папкам. По тому комментарию отслеживать папки с вышеописанными условиями и перемещать.
3) Организовать поиск через Script Content Plugin, самостоятельно проверить найденные по заданному изначально критерию папки, потом воспользоваться скриптом автоперемещения.
4) Воспользоваться обычным поиском папок с заданной глубиной расположения этих распакованных директорий. Задача скрипта будет выделить нужные папки для самостоятельной проверки на пригодность для последующего перемещения наверх.
Что лучше?
Добавлено: Сб янв 14, 2012 17:25
Tol!k
Код: Выделить всё
@echo off &chcp 1251 >nul &setlocal enableextensions
rem Список папок "только 1 папка и 0 файлов на первом уровне вложенности"
set "list=_1.lst"
>"%list%" echo.
for /d /r %%d in (*) do (
dir "%%d" |find "0 файлов 0 байт" >nul &&for /f %%c in (
'dir "%%d" ^|find /c "<DIR>"'
) do if "%%c"=="3" >>"%list%" echo %%d
)
Добавлено: Сб янв 14, 2012 17:28
Flasher
Tol!k
Список - это неинтересно..