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 

Как найти папки, не содержащие определённых файлов
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Ciber SLasH



Joined: 20 Aug 2005
Posts: 209
Location: С.-Петербург

Post (Separately) Posted: Sat Dec 29, 2012 13:58    Post subject: Reply with quote

Подскажите пожалуйста, как найти папки, не содержащие определённых файлов?
Создал шаблон Test в DirMask:
Test=*.jpg;*.jpeg;*.jp2;*.jpc;*.gif;*.png;*.psd;*.tif;*.pcx;*.tga;*.bmp; *.htm;*.html;*.shtm;*.shtml;*.txt; *.avi;*.mpg;*.mpeg;*.m2v;*.mpe;*.asf;*.mov;*.rm; *.doc*; *.xls*; *.ppt*
Но не находятся вообще папки с какими-либо файлами из шаблона: filemask - DirMask - > 1 - Test
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Dec 29, 2012 14:23    Post subject: Reply with quote

Обязательно этим плагином? Стандартные возможности ТС (*.* | *.ext1 *.ext2 *.ext3 ...) не устраивают?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Ciber SLasH



Joined: 20 Aug 2005
Posts: 209
Location: С.-Петербург

Post (Separately) Posted: Sat Dec 29, 2012 14:32    Post subject: Reply with quote

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



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

Post (Separately) Posted: Sat Dec 29, 2012 14:45    Post subject: Reply with quote

Ciber SLasH
В настоящее время плагин работает по принципу "одна маска — одна строка", объединять несколько масок в одной строке нельзя. Этот вопрос я с автором некоторое время назад приватно обсуждал, было обещано, что посмотрит, но без гарантии реализации. Ждём.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Ciber SLasH



Joined: 20 Aug 2005
Posts: 209
Location: С.-Петербург

Post (Separately) Posted: Sat Dec 29, 2012 17:00    Post subject: Reply with quote

Может есть другой способ решения моей задачи?
Back to top
View user's profile Send private message
Tol!k



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

Post (Separately) Posted: Sat Dec 29, 2012 18:28    Post subject: Reply with quote

Code:
@echo off &setlocal enableextensions &chcp 1251 >nul

set "mask=*.jpg *.jpeg *.jp2 *.jpc *.gif *.png *.psd *.tif *.pcx *.tga *.bmp *.htm *.html *.shtm *.shtml *.txt *.avi *.mpg *.mpeg *.m2v *.mpe *.asf *.mov *.rm *.doc* *.xls* *.ppt*"
set "output=%cd%\--.lst"

for /d /r %%$ in (*) do (
   title "%%$"
   pushd "%%$"
   >nul 2>&1 dir /b/a-d/s %mask% || >>"%output%" echo(%%$\
   popd
)


Last edited by Tol!k on Mon Dec 31, 2012 17:13; edited 2 times in total
Back to top
View user's profile Send private message
Ciber SLasH



Joined: 20 Aug 2005
Posts: 209
Location: С.-Петербург

Post (Separately) Posted: Sat Dec 29, 2012 18:49    Post subject: Reply with quote

Tol!k
Благодарю, только как теперь выделить в TC (или сразу удалить) эти каталоги из файл-списка?
Выделение\Загрузить выделение из файла - не срабатывает.
Back to top
View user's profile Send private message
Tol!k



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

Post (Separately) Posted: Sat Dec 29, 2012 19:00    Post subject: Reply with quote

в самый конец добавь строку
Code:

for /f "delims=" %%$ in ('sort /r "%output%"') do (del /f /q "%%$*" &rd /q "%%$" 2>nul)


Last edited by Tol!k on Mon Dec 31, 2012 04:27; edited 1 time in total
Back to top
View user's profile Send private message
Avada



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

Post (Separately) Posted: Sat Dec 29, 2012 21:14    Post subject: Reply with quote

Поскольку поставленная задача плагином FileMask в настоящий момент не решается, а в качестве решения далее предложен батник, создана отдельная тема в "Автоматизации".
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Ciber SLasH



Joined: 20 Aug 2005
Posts: 209
Location: С.-Петербург

Post (Separately) Posted: Sun Dec 30, 2012 12:27    Post subject: Reply with quote

Tol!k wrote:
в самый конец добавь строку
Code:

for /f "delims=" %%$ in ('sort /r "%output%"') do rd /q "%%$" 2>nul

но удалятся только _совершенно_ пустые папки

Но мне нужно удалить папки в которых есть файлы и вложенные папки. Confused
Back to top
View user's profile Send private message
Tol!k



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

Post (Separately) Posted: Sun Dec 30, 2012 13:30    Post subject: Reply with quote

а если в этой папке нет "определённых" файлов, а во вложенной есть?
Code:
нет\
нет\есть\
нет\есть\1.jpg
Back to top
View user's profile Send private message
Ciber SLasH



Joined: 20 Aug 2005
Posts: 209
Location: С.-Петербург

Post (Separately) Posted: Mon Dec 31, 2012 10:43    Post subject: Reply with quote

Tol!k wrote:
а если в этой папке нет "определённых" файлов, а во вложенной есть?

Вот тут и засада. Нужно удалить только те папки, в которых нет pattern-файлов как в корне папки, так и во всех вложенных.
Т.е. сканируется список папок и если НЕ находятся pattern-файлы в иерархии текущей папки из списка, то удалить папку со всем содержимым.
Back to top
View user's profile Send private message
Tol!k



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

Post (Separately) Posted: Mon Dec 31, 2012 17:14    Post subject: Reply with quote

исправь
Quote:
>nul 2>&1 dir /b/a-d/s %mask% || >>"%output%" echo(%%$\
Back to top
View user's profile Send private message
Ciber SLasH



Joined: 20 Aug 2005
Posts: 209
Location: С.-Петербург

Post (Separately) Posted: Sat Jan 12, 2013 10:14    Post subject: Reply with quote

Tol!k
Благодарю - всё получилось и, как не странно, выделение стало загружаться из файла.
Back to top
View user's profile Send private message
Ciber SLasH



Joined: 20 Aug 2005
Posts: 209
Location: С.-Петербург

Post (Separately) Posted: Tue Jan 15, 2013 16:57    Post subject: Reply with quote

Осталось несколько вопросов
1) как понять, что делает строка
>nul 2>&1 dir /b/a-d/s %mask% || >>"%output%" echo(%%$\
По кускам понимаю, но с последовательностью не могу разобраться.
>nul - перенаправить на ус-во null
2>&1 - объединение потоков ошибок и вывода
dir /b/a-d/s %mask% - вывод только имён файлов, без каталогов. Со всеми вложенными каталогами
echo(%%$\" - вывод полного пути к каталогу с добавлением в конец символа \
|| - выполняет команду, если предыдущая команды выполнилась с ошибкой
>>"%output%" - дописать в файл "%output%"
2) как сделать так, чтобы можно было указать параметром BAT-нику, какие каталоги сканировать. Чтобы в качестве параметра можно было указать файл-список?
К примеру файл-список "list.txt"
Code:
F:\Failo\Downloads\Pictures\Архитектура\
F:\Failo\Downloads\Pictures\Военные\

Скрипту передаётся параметр: <скрипт>.bat "F:\Failo\Downloads\Pictures\list.txt"
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 1, 2  Next
Page 1 of 2

 
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