![]() |
Поиск и удаление файлов по маске на всех локальных дисках
Доброе время суток, уважаемые камрады!
Помогите, пожалуйста, решить следующую задачу: Нужно написать скрипт, который выполняет следующее: - поиск файлов по расширению (чтобы список расширений можно было дополнить в скрипте) - поиск на всех локальных дисках, но не сетевых - удаление найденных файлов Более ничего не нужно - ни логирования, ни подсчета и т.д. Прошу также уделить внимание тому, что должно быть строгое соответствие расширению. Например, я находил скрипты, где в списке перечислены "*.log", а при этом скрипт находил еще и файлы с расширением .log2 или .logged. Почему создал новую тему: прокурил не только этот форум, но еще и соседние. Находил куски кодов что тут, что там, но в силу того, что склад ума не кодерский, не смог их соединить... Сижу уже пару дней в темноте и тишине, и безуспешно :-( |
Прога Everything и её консольная версия. один раз построил индекс(~минута), затем запрос в базу и удаление по списку. тулза умеет регулярки :
Скрытый текст
Код:
=>es --help |
x0r, как Вы можете представить эту утилиту в моей задаче? Смысл строить индекс для файла, подлежащего удалению, а также в принципе использование стороннего ПО - я не вижу. Тем более, когда cmd может выполнить мою задачу на 100%...
|
а ты попробуй сначала, потом будешь домысливать. Это не "тот индекс", это другой, годный ;-)
батнегом ты будешь искать долго-и-нудно, Everithing найдет за секунду. Одну секунду. Везде. Построит список. Надо только обработать готовый список через for /f ... |
Цитата:
Код:
dir c:\*.sys /b /s /a-d |
Цитата:
С учётом вышеизложенного: Код:
@echo off Если в созданном в кодировке OEM-866 логе «del.log» будут записаны именно подлежащие удалению файлы, то для реального их удаления уберите из кода выделенное красным цветом. |
NickM, это понятно, можно и так, если нада переносимость и ничего не скачивать.
Код:
ren Замени move на del если уверен что надо удалить файлы. |
Georgio, спасибо огромное! Ищет что надо и где надо!!
А сложно ли будет доработать скрипт так, чтобы он еще на съемных дисках (а-ля флешки и внешние винты) искал? x0r, у нас есть перечень разрешенного к использованию ПО, куда не входит эта утилита. Поэтому, даже если закрыть глаза на неудобство привлечения стороннего ПО, согласовать с СКЗ это тот еще геморрой... |
n1gt, попробуйте:
Код:
@echo off |
Georgio, Все отлично, спасибо за решение!
|
Скажите, как изменить вышеуказанный скрипт, чтобы он искал не на всех логических дисках, а только на указанных, например - C:, D:
Я так понимаю, что нужно заменить сроку - ( wmic LogicalDisk where "DriveType=3" get Name), не могу понять на что. Спасибо. Скрытый текст
Код:
@echo off |
Artym1,
Код:
......... |
если есть четкое условие, то не проще так (и явно быстрее как для cmd)
Код:
for /f "delims=" %%a in ('dir /a-d/b/s "C:\*.txt" "C:\*.log" "C:\*.dat" "D:\*.txt" "D:\*.log" "D:\*.dat"') do echo del "%%a" |
alpap, Быстрее всего и проще
Код:
FOR %%i IN (C: D:) DO For %%j IN ("log" "txt" "kuku") Do Echo Del /S "%%i\*.%%~j" Цитата:
Код:
Том в устройстве Z имеет метку Arhiv Как вариант решения, можно добавить костыль в виде If для жесткой проверки расширения Код:
@Echo Off |
Цитата:
а мы уже разбираем условие Artym1 и не факт что ему нужны такие же ограничения как у ТС. Собственно поэтому и положено и рекомендуется создавать новую тему, а раздувать старую. |
Цитата:
![]() 8.3 filename - Wikipedia. Это ещё что — как удаляются некоторые файлы, начинающиеся с кириллицы в имени, по какой-нибудь вполне невинной на первый взгляд маске «a*.doc». Ради интереса, можно выполнить команду, скажем: Код:
dir /r "%UserProfile%\*~*.*" P.S. Автору темы, конечно, уже давно всё равно. |
Извините, что раскопал динозавра.
А можете помочь с таким же скриптом, но уже для удаления не файлов, а папок? То есть, чтобы можно было указать имена папок и поиск/удаление было по всем локальным дискам. |
Код:
@Echo Off Я поставил в красной строке и в красной закрывающей скобке имя диска - исключения для просмотра диска C: Эти красные строки можно удалить, но просмотр C: диска займёт очень большое время - решайте сами, оно Вам нужно? Если таких исключений несколько, то можно в красной строке написать несколько If, например: If /I Not %%i==C: If /I Not %%i==E: ( |
megaloman, спасибо огромное. А можно сделать папки исключения, допустим сканировать диск C:, но не сканировать C:\Windows ?
|
Код:
@Echo Off |
Время: 16:56. |
Время: 16:56.
© OSzone.net 2001-