Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Удаление в 50 каталогах лишних папок, с сохранением файлов
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
shveicar



Joined: 18 Apr 2011
Posts: 277
Location: Россия Москва

Post (Separately) Posted: Wed Jul 27, 2011 19:04    Post subject: Reply with quote

Не знаю, первый или последний, но для моей задачи подошёл вот этот пусть будет№1, а вот этот пусть будет №2, работает именно так как я описываю. Отсюда вывод: (каждому инструменту - свое назначение).
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Jul 27, 2011 19:14    Post subject: Reply with quote

С учётом приведённых примеров могу утверждать, что в моём скрипте ругани быть не должно.
Back to top
View user's profile Send private message
Darkenlightener



Joined: 14 Jan 2012
Posts: 19

Post (Separately) Posted: Sat Jan 14, 2012 13:39    Post subject: Поиск папок, содержащих только 1 непустую папку Reply with quote

Здравствуйте!

Обращаюсь к корифеям с довольно нетривиальным вопросом (во всяком случае, поиск по форуму мне не помог).

Я привожу в порядок свою электронную библиотеку, в ней много папок, полученных путем распаковки скачанных архивов. Часто получается так, что в папке находится 1 вложенная папка, а уже в ней лежат файлы и/или папки. Мне приходится вручную копировать файлы и/или папки из вложенной папки в основную, а вложенную (опустевшую) папку удалять. Вопрос: как сделать так, чтобы поиск находил все папки, в которых есть 1 вложенная папка (непустая), но нет файлов на том же уровне вложенности, что и эта папка? Скриншоты приложить не удалось из-за того, что я новичок, поэтому опишу их словами Very Happy :

Папки, содержимое которых меня устраивает — несколько непустых папок или непустые папки + файлы на конкретном уровне вложенности.
Папки, содержимое которых меня не устраивает — только 1 вложенная непустая папка на конкретном уровне вложенности (в ней могут быть папки с файлвми или просто файлы, это непринципиально).

Я пробовал делать это с помощью плагина DirSizeCalc, но не удалось. Подозреваю, что проблему можно решить, если при поиске задать значение одинаковости уровня вложенности для наличия папки и отсутствия файлов, т.е. Ditectory Count = 1 + File Count = 0 + один и тот же уровень вложенности. Однако, насколько я понимаю, сейчас в Тотале при поиске можно задать только уровень вложенности, а это не подходит, поскольку меня интересует не глубина поиска, а уровни, на которых есть непустая папка и нет файлов.

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

 !  Avada:
Всё последующее объединено с текущей темой с учётом близости поставленных задач.


Last edited by Darkenlightener on Sat Jan 14, 2012 14:24; edited 1 time in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Jan 14, 2012 13:50    Post subject: Reply with quote

Глубину вложенности можно задавать в filex.
Хотя это не поможет, проще один из имеющихся скриптов перемещения на уровень вверх подлатать.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10268
Location: Россия, Саратов

Post (Separately) Posted: Sat Jan 14, 2012 14:25    Post subject: Reply with quote

Darkenlightener
В рамках функциональности известных мне плагинов задача, ИМХО, не решается. Слишком много граничных условий, между которыми не удаётся выстроить нужную взаимосвязь.

Flasher wrote:
Хотя это не поможет, проще один из имеющихся скриптов перемещения на уровень вверх подлатать.

Именно так.

И вообще это тема не для "Общих вопросов". Переношу в "Автоматизацию".
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Darkenlightener



Joined: 14 Jan 2012
Posts: 19

Post (Separately) Posted: Sat Jan 14, 2012 14:28    Post subject: Reply with quote

Flasher
Вот именно, глубина вложенности меня здесь вообще не интересует.

Avada
Мне надо, чтобы поиск осуществлялся в пределах каждого уровня и они между собой не смешивались при поиске, т.е. проверяется первый уровень на Ditectory Count = 1 + File Count = 0, потом второй (первый при этом не трогаем), третий (первый и второй пропускаем), как-то так. Вот, в принципе, и вся взаимосвязь, по-моему, не так уж много условий Very Happy

В скриптах я, к сожалению, не Копенгаген Sad
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Jan 14, 2012 14:44    Post subject: Reply with quote

Darkenlightener wrote:
чтобы поиск осуществлялся в пределах каждого уровня и они между собой не смешивались при поиске
А какой смысл в рекурсивном нахождении папок, если требуется перемещать наверх содержимое одиноких подкаталогов первого уровня? Это же каша получится, а не полноценные распакованные "образы". Или есть уверенность, что в структуре имеющихся папок с рядом лежащими файлами нет одиноких подкаталогов без близлежащих файлов?
Back to top
View user's profile Send private message
Darkenlightener



Joined: 14 Jan 2012
Posts: 19

Post (Separately) Posted: Sat Jan 14, 2012 16:39    Post subject: Reply with quote

Flasher
Честно говоря, идею вообще не уловил(( Рекурсию я себе слабо представляю))

Если говорить о том, что мне нужно в идеале, то надо, чтобы в каждой папке на любом уровне были или непустые папки + файлы или только файлы. Как это по-научному будет, не знаю, к сожалению. "Нутром чувствую, что литр, а как математически выразить — не знаю!" (с) Laughing

В идеале хотелось бы добиваться этого автоматически, но если это слишком сложно, то хотя бы находить папки только с 1 вложенной папкой на каждом уровне, чтобы потом вручную их обрабатывать.

Если непонятно, откуда у меня берутся такие папки, объясняю, что они получаются при массовой распаковке rar и zip архивов по принципу "извлечь каждый архив в отдельную папку". Если в архив упакована одна папка, то на выходе получается папка\папка\файлы вместо нужного мне папка\файлы
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Jan 14, 2012 16:45    Post subject: Reply with quote

Darkenlightener
Никакой новой информации. Я вообще-то вопросы задал, а не идеей поделился.
Рекурсивный поиск - это поиск без ограничений глубины.
Я пишу о том, что в любой такой папке, воссозданной из распакованного архива могут находиться на последующих глубинах одиночные папки без файлов рядом. А дальше отвечаем на мой вопрос.
Автоматизировать можно только исходя из ответа на него.
Back to top
View user's profile Send private message
Darkenlightener



Joined: 14 Jan 2012
Posts: 19

Post (Separately) Posted: Sat Jan 14, 2012 16:52    Post subject: Reply with quote

Flasher wrote:
Никакой новой информации. Я вообще-то вопросы задал, а не идеей поделился.

Я просто вопрос не понял, потому так ответил Very Happy

Flasher wrote:

Я пишу о том, что в любой такой папке, воссозданной из распакованного архива могут находиться на последующих глубинах одиночные папки без файлов рядом.


Их тоже надо найти. Надо найти все такие папки на всех уровнях и стянуть наверх до вида папка\папка+папка+(...)+папка+файлы или папка\папка+папка+(...)+папка. Или, хотя бы, просто найти. Все вложенные папки должны выглядеть так же. Это ответ на вопрос?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Jan 14, 2012 16:56    Post subject: Reply with quote

Darkenlightener wrote:
Это ответ на вопрос?
Нет. Я вообще не понял логику записи. Исходна цель - перемещение + удаление опустошаемых папок, а не поиск, так? Зачем искать на любой глубине, если это не стыкуется с исходной целью?
Back to top
View user's profile Send private message
Darkenlightener



Joined: 14 Jan 2012
Posts: 19

Post (Separately) Posted: Sat Jan 14, 2012 17:02    Post subject: Reply with quote

Flasher
Исходная цель была именно поиск таких папок для удаления вручную, т.к. я не предполагал, что еще и перемещать можно автоматически. Но если можно организовать автоматическое перемещение, то поиск мне не нужен, вы правы.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Jan 14, 2012 17:15    Post subject: Reply with quote

Darkenlightener wrote:
я не предполагал, что еще и перемещать можно автоматически
А это ни о чём не говорит?:
Flasher wrote:
проще один из имеющихся скриптов перемещения на уровень вверх подлатать

Я вижу пока следующие пути решения вопроса:
1) Поскольку при распаковке имя директории соответвует базовому имени архива, можно сравнивать её имя с именем находящейся внутри неё директории, допустим, по каким-то первым символам, и если они совпадают, то содержимое должно перемещаться наверх. Тут же можно проверять наличии файлов с определённым расширением.
2) Распаковать все архивы заново с присвоением одинакового комментария папкам. По тому комментарию отслеживать папки с вышеописанными условиями и перемещать.
3) Организовать поиск через Script Content Plugin, самостоятельно проверить найденные по заданному изначально критерию папки, потом воспользоваться скриптом автоперемещения.
4) Воспользоваться обычным поиском папок с заданной глубиной расположения этих распакованных директорий. Задача скрипта будет выделить нужные папки для самостоятельной проверки на пригодность для последующего перемещения наверх.

Что лучше?


Last edited by Flasher on Sat Jan 14, 2012 17:40; edited 1 time in total
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sat Jan 14, 2012 17:25    Post subject: Reply with quote

Code:
@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
)


Last edited by Tol!k on Sat Jan 14, 2012 17:35; edited 1 time in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Jan 14, 2012 17:28    Post subject: Reply with quote

Tol!k
Список - это неинтересно..
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8  Next
Page 4 of 8

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group