View previous topic :: View next topic |
Author |
Message |
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Sat Dec 29, 2012 13:58 Post subject: |
|
|
Подскажите пожалуйста, как найти папки, не содержащие определённых файлов?
Создал шаблон 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 |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 29, 2012 14:23 Post subject: |
|
|
Обязательно этим плагином? Стандартные возможности ТС (*.* | *.ext1 *.ext2 *.ext3 ...) не устраивают? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Sat Dec 29, 2012 14:32 Post subject: |
|
|
Стандартными средствами находятся файлы, а мне нужно найти каталоги, которые не содержат определённый шаблон файлов. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10257 Location: Россия, Саратов
|
(Separately) Posted: Sat Dec 29, 2012 14:45 Post subject: |
|
|
Ciber SLasH
В настоящее время плагин работает по принципу "одна маска — одна строка", объединять несколько масок в одной строке нельзя. Этот вопрос я с автором некоторое время назад приватно обсуждал, было обещано, что посмотрит, но без гарантии реализации. Ждём. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Sat Dec 29, 2012 17:00 Post subject: |
|
|
Может есть другой способ решения моей задачи? |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sat Dec 29, 2012 18:28 Post subject: |
|
|
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 |
|
|
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Sat Dec 29, 2012 18:49 Post subject: |
|
|
Tol!k
Благодарю, только как теперь выделить в TC (или сразу удалить) эти каталоги из файл-списка?
Выделение\Загрузить выделение из файла - не срабатывает. |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sat Dec 29, 2012 19:00 Post subject: |
|
|
в самый конец добавь строку
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 |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10257 Location: Россия, Саратов
|
(Separately) Posted: Sat Dec 29, 2012 21:14 Post subject: |
|
|
Поскольку поставленная задача плагином FileMask в настоящий момент не решается, а в качестве решения далее предложен батник, создана отдельная тема в "Автоматизации". _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Sun Dec 30, 2012 12:27 Post subject: |
|
|
Tol!k wrote: | в самый конец добавь строку
Code: |
for /f "delims=" %%$ in ('sort /r "%output%"') do rd /q "%%$" 2>nul |
но удалятся только _совершенно_ пустые папки |
Но мне нужно удалить папки в которых есть файлы и вложенные папки. |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sun Dec 30, 2012 13:30 Post subject: |
|
|
а если в этой папке нет "определённых" файлов, а во вложенной есть?
Code: | нет\
нет\есть\
нет\есть\1.jpg |
|
|
Back to top |
|
|
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Mon Dec 31, 2012 10:43 Post subject: |
|
|
Tol!k wrote: | а если в этой папке нет "определённых" файлов, а во вложенной есть? |
Вот тут и засада. Нужно удалить только те папки, в которых нет pattern-файлов как в корне папки, так и во всех вложенных.
Т.е. сканируется список папок и если НЕ находятся pattern-файлы в иерархии текущей папки из списка, то удалить папку со всем содержимым. |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Mon Dec 31, 2012 17:14 Post subject: |
|
|
исправь
Quote: | >nul 2>&1 dir /b/a-d/s %mask% || >>"%output%" echo(%%$\ |
|
|
Back to top |
|
|
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Sat Jan 12, 2013 10:14 Post subject: |
|
|
Tol!k
Благодарю - всё получилось и, как не странно, выделение стало загружаться из файла. |
|
Back to top |
|
|
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Tue Jan 15, 2013 16:57 Post subject: |
|
|
Осталось несколько вопросов
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 |
|
|
|