|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск по отрицательной маске *.* / not= dll |
|
CMD/BAT - [решено] Поиск по отрицательной маске *.* / not= dll
|
Ветеран Сообщения: 842 |
Как?
![]() Условия - рекурсивно, в текущем каталоге или же в указанном, если возможен батник с передачей условия в него... а найти надо все файлы кроме заданного типа - любого. хорошо бы батник такой чтоб не редактировать каждый раз, а передавать в него условия поиска? типа батник как утилита. # ifind.cmd --not pdf (например) |
|
------- Отправлено: 15:50, 15-07-2009 |
Сообщения: 53500
|
Профиль | Отправить PM | Цитировать semiono, как-то так?
@Echo Off SetLocal EnableExtensions Set LstTmp="%Temp%\ifind_lst.tmp" Dir /A-D /B "%~2%~1" >%LstTmp% Dir /A-D /B "%~2" | FindStr /L /X /V /G:%LstTmp% Примеры: Если нужно искать в подкаталогах, добавить опцию /S в командах Dir. |
Отправлено: 16:36, 15-07-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Сабж показался интересным и решил "убить" время...
значить логика работы: iFind.bat [MODE] [MASK MASK...] [MODE] [MASK MASK...] Пакетник распознает следующие команды: + и - (по умолчанию включен режим +), вдобавок в момент запуска удаления списка файлов iFind.lst не происходит, т.е. при следующих запусках работа над списком продолжается. Все остальное считается маской для поиска. В зависимости от текущего режима результат поиска либо добавляется либо удаляется из файла списка iFind.lst (в тек. каталоге). При добавлении файлов в список могус случаться повторы, например файл file03.mov годится и для маски *0?.* и для *.mov. Такие повторы убираются автоматом (лишние полтора полчаса на отладку ![]() пример: iFind *.jpg *.gif *.png - _*.* + _*.png В список сначала отправляются все картинки (по умолчанию режим добавления), потом режим переключается на удаление и от туда удаляются все файлы, начинающиеся с подчеркивания, но потом режим снова переключается на добавление и обратно возвращаются png-картинки, начинающиеся с подчеркивания. @echo off set ListMode=Add SetLocal EnableExtensions SetLocal EnableDelayedExpansion :Loop if "%1"=="" Exit set cmd=%1 shift echo proc: %ListMode%: %cmd% if "%cmd%"=="+" (set ListMode=Add) else if "%cmd%"=="-" (set ListMode=Sub) else Goto List_%ListMode% echo Set ListMode to "%ListMode%" Goto Loop :List_Add if exist iFind.tmp del /f iFind.tmp dir /s /b /on /a-d %cmd%>>iFind.lst sort iFind.lst /O iFind.tmp del /f iFind.lst set prev= for /F "delims=" %%L in (iFind.tmp) do if not "%%L"=="!prev!" ( EndLocal echo %%L>>iFind.lst SetLocal EnableExtensions SetLocal EnableDelayedExpansion set prev=%%L ) del /f iFind.tmp Goto Loop :List_Sub if exist iFind.tmp del /f iFind.tmp dir /s /b /on /a-d %cmd%>iFind.tmp for /F "delims=" %%L in (iFind.tmp) do ( for /F "skip=2 delims=" %%T in ('Find /V "%%L" iFind.lst') do echo %%T>>iFind.tmp2 del /f iFind.lst ren iFind.tmp2 iFind.lst ) del /f iFind.tmp Goto Loop |
------- Отправлено: 19:53, 15-07-2009 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Petya V4sechkin:
![]() пример использования: |
|
Отправлено: 08:41, 16-07-2009 | #4 |
Сообщения: 53500
|
Профиль | Отправить PM | Цитировать Цитата amel27:
Хотя автору может быть достаточно и твоего варианта. |
||
Отправлено: 08:46, 16-07-2009 | #5 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать Цитата NiOl:
![]() NiOl, получается функция кэшируется в список ![]() а в памяти нельзя? у меня какие-то глюки были, и консоль упала как буд-то бы от переполнения... |
|
------- Последний раз редактировалось semiono, 16-07-2009 в 17:45. Отправлено: 17:30, 16-07-2009 | #6 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать amel27, можешь добавить хелп к твоему скрипту?
![]() например if xDir --help или --h тогда то-сё... == {xDIR.cmd ".exe .dll .ocx" %windir%\system32} и будет уже готовый инструмент! останеться только лицензию придумать ))) GPL |
------- Отправлено: 17:48, 16-07-2009 | #7 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата semiono:
ИМХО лучше текстовик приложить (xDir.hlp), чем громоздить лишний код |
|
Отправлено: 05:36, 17-07-2009 | #8 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Цитата semiono:
|
|
------- Отправлено: 15:20, 21-07-2009 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Удалить папки по маске | run0ut | Скриптовые языки администрирования Windows | 9 | 21-03-2017 01:27 | |
CMD/BAT - [решено] Перемещение и удаление файлов по условию и маске | VitHAK | Скриптовые языки администрирования Windows | 14 | 23-12-2013 08:57 | |
CMD/BAT - [решено] Копирование файлов по маске за вчерашний день | dvassilyev | Скриптовые языки администрирования Windows | 8 | 19-10-2011 19:36 | |
CMD/BAT - [решено] Перемещение (удаление) директорий по маске | ven00m | Скриптовые языки администрирования Windows | 17 | 15-11-2009 10:24 | |
CMD/BAT - [решено] Backup дерева папок по маске | newb1e | Скриптовые языки администрирования Windows | 4 | 27-07-2009 17:28 |
|