|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск и удаление файлов по маске на всех локальных дисках |
|
|
CMD/BAT - [решено] Поиск и удаление файлов по маске на всех локальных дисках
|
Новый участник Сообщения: 5 |
Доброе время суток, уважаемые камрады!
Помогите, пожалуйста, решить следующую задачу: Нужно написать скрипт, который выполняет следующее: - поиск файлов по расширению (чтобы список расширений можно было дополнить в скрипте) - поиск на всех локальных дисках, но не сетевых - удаление найденных файлов Более ничего не нужно - ни логирования, ни подсчета и т.д. Прошу также уделить внимание тому, что должно быть строгое соответствие расширению. Например, я находил скрипты, где в списке перечислены "*.log", а при этом скрипт находил еще и файлы с расширением .log2 или .logged. Почему создал новую тему: прокурил не только этот форум, но еще и соседние. Находил куски кодов что тут, что там, но в силу того, что склад ума не кодерский, не смог их соединить... Сижу уже пару дней в темноте и тишине, и безуспешно :-( |
|
Отправлено: 17:09, 03-12-2016 |
Забанен Сообщения: 795
|
Прога Everything и её консольная версия. один раз построил индекс(~минута), затем запрос в базу и удаление по списку. тулза умеет регулярки :
|
Отправлено: 18:06, 03-12-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать x0r, как Вы можете представить эту утилиту в моей задаче? Смысл строить индекс для файла, подлежащего удалению, а также в принципе использование стороннего ПО - я не вижу. Тем более, когда cmd может выполнить мою задачу на 100%...
|
Отправлено: 18:22, 03-12-2016 | #3 |
Забанен Сообщения: 795
|
а ты попробуй сначала, потом будешь домысливать. Это не "тот индекс", это другой, годный ;-)
батнегом ты будешь искать долго-и-нудно, Everithing найдет за секунду. Одну секунду. Везде. Построит список. Надо только обработать готовый список через for /f ... |
Отправлено: 19:01, 03-12-2016 | #4 |
Ветеран Сообщения: 4599
|
Профиль | Отправить PM | Цитировать Цитата x0r:
|
||
Отправлено: 19:21, 03-12-2016 | #5 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Цитата n1gt:
С учётом вышеизложенного: @echo off setlocal :: Здесь указываете расширения удаляемых файлов (именно так, как написано в этом примере): set "ext=.txt/.log/.dat" for /f "skip=1" %%i in ('wmic LogicalDisk where DriveType^=3 get Name') do ( for %%j in (%%i) do ( for /f "delims=" %%k in ('2^>nul dir %%j\ /a-d /b /s^| findstr /e /i /l /c:"%ext:/=" /c:"%"') do ( >>del.log echo del /a /f "%%k" ) ) ) endlocal exit /b Если в созданном в кодировке OEM-866 логе «del.log» будут записаны именно подлежащие удалению файлы, то для реального их удаления уберите из кода выделенное красным цветом. |
|
Отправлено: 20:04, 03-12-2016 | #6 |
Забанен Сообщения: 795
|
NickM, это понятно, можно и так, если нада переносимость и ничего не скачивать.
ren Замени move на del если уверен что надо удалить файлы. @echo off @chcp 866 dir /b /s "c:\Users\HomeUser\Downloads\*.exe" >list.txt type list.txt set /p S= ¤¤¤ Удалить эти файлы? ¤¤¤ [ "y" - Да ] : if /i %S% NEQ y goto :EOF for /f %%i in (list.txt) do move "%%i" "%%i.bk551" rem удаление rem for /f %%i in (list.txt) do del /Q /F "%%i" exit |
Отправлено: 20:25, 03-12-2016 | #7 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Georgio, спасибо огромное! Ищет что надо и где надо!!
А сложно ли будет доработать скрипт так, чтобы он еще на съемных дисках (а-ля флешки и внешние винты) искал? x0r, у нас есть перечень разрешенного к использованию ПО, куда не входит эта утилита. Поэтому, даже если закрыть глаза на неудобство привлечения стороннего ПО, согласовать с СКЗ это тот еще геморрой... |
Отправлено: 20:29, 03-12-2016 | #8 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать n1gt, попробуйте:
@echo off setlocal set "ext=.txt/.log/.dat" for /f "skip=1" %%i in ('wmic LogicalDisk where "DriveType=3 or DriveType=2" get Name') do ( for %%j in (%%i) do ( for /f "delims=" %%k in ('2^>nul dir %%j\ /a-d /b /s^| findstr /e /i /l /c:"%ext:/=" /c:"%"') do ( >>del2.log echo del /a /f "%%k" ) ) ) endlocal exit /b |
Отправлено: 21:04, 03-12-2016 | #9 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Georgio, Все отлично, спасибо за решение!
|
Отправлено: 21:54, 03-12-2016 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - ПОИСК файлов на всех дисках с последующей отправкой их на FTP. | ariolit | Скриптовые языки администрирования Windows | 3 | 10-10-2015 15:32 | |
CMD/BAT - Поиск файлов по маске на удаленных машинах по словарю с выгрузкой в *.txt | gremlintv2 | Скриптовые языки администрирования Windows | 3 | 09-12-2013 04:46 | |
CMD/BAT - [решено] Удаление всех файлов с одним именем на всех дисках | ZARG-X | Скриптовые языки администрирования Windows | 3 | 08-03-2010 11:53 | |
CMD/BAT - [решено] Удаление всех папок с одним именем на всех дисках | volk1234 | Скриптовые языки администрирования Windows | 15 | 13-11-2009 02:13 |
|