![]() |
Найти все папки, содержащих 2 определенные папки (кеш, бекап)
Здравствуйте
Прошу помощи с CMD скриптом КРАТКО/АЛГОРИТМ Код:
в назначенном пути ПОДРОБНО В моей системе, семье, браузеры на основе движка Chromium Имена-папки профилей пользователей разные, добавляются/удаляются Цель: очищать кеш, бекапы в папках профилей, имя-путь которых не знаю/меняется Как найти профиль, не зная его названия? - В каждом профиле пользователя, на движке Chromium, есть стандартные папки - значит, папку профиля можно найти если в нем есть "папкаА"+"папкаB" Далее: к всем найденным папкиХ (где есть "папкаА"+"папкаB") применить произвольный код (на бекап и/или очистку) * папка профиля - мои профили названы англ буквами но семья может... и минус, тире, @, пробел, кириллицу добавить в название… Написать самостоятельно не смогу: пытался… искал решение, собирал из отрывков снипетов... навешивал на алгоритм команды... ...так осилить и не смог решил обратиться к вам форумчане за помощью. КАРКАС/АЛГОРИТМ Код:
@echo off & chcp 866 0=) ясно понятно, что я "необразованный" в постановке кода в for.... ясно, внутри for ставить if exist... скорее всего создает доп. нагрузку/время на анализ-сравнение но.. другого решения в голове нет, а реализации тем более( Помогите пожалуйста скриптом Всем откликнувшимся, заранее, огромное спасибо! PS, ОФФТОП, FAQ
Зачем вообще? - часть в общий cmd с необходимыми задачами + бекап закладок + очистка кешей браузера * тестовый день в Firefox создал кеш на 750-800мб, кеш же моих постоянных 10+ профилей =200-2000мб/мес на профиль) * да, правильней выносить кеш в %TEMP% / отдельный диск / в оперативку но частая переустановка системы, запоминание что где, не дает гарантии от "забыть" Почему не специальные утилиты очистки и бекапа? - потихоньку собираю cmd под себя, из разных сниппетов - конкретно те задачи, которые нужны - установка, запуск, сопряжение, расписание разрозненного софта в разной последовательности, после перекидывание файлов... и в довесок, по любому, на старте и финише, использование cmd... Почему не искать сразу папки кешей Cache/Code Cache или файл закладок? - в путях c:\Users\%USERNAME%\AppData\Roaming\ c:\Users\%USERNAME%\AppData\Local\ могут встретиться папки с схожим названием кешей/закладок а если поиск производиться по всем логическим дискам - тем более Сам создаешь профили = знаешь путь, зачем нагружать систему поиском? - с портабл бразуером - ок, хорошо - с стейбл системой - ок, хорошо - но при добавление новых профилей - править и cmd на очистку - можно забыть... - на разных пк семьи, могут быть разные профили и везде найти+править cmd... Почему папки, а не файлы в качестве маркеров? - посмотрел профили на разных хромиум браузерах: имеющиеся схожие файлы, большей частью могут быть удалены при глубокой очистке (журналы и тп) или часть имен файлов отличается/отсутствуют в зависимости от «конторы браузера» а нижеследующие папки есть у всех Код:
User Data\Default\blob_storage\ * плюс если кому понадобится, заметка: пути профилей Default по умолчанию Код:
c:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default\ Зачем столько браузеров? - постоянных 2-3 - остальные установил посмотреть структуру папок профилей |
Код:
@Echo Off |
Цитата:
Замечательно! Почти. Прогнал тестов 30+ На старом винте 5400 работает быстро. Рад! Благодарю! :( "но" - сам удивился: А) Поиск по пути c:\Users\%USERNAME% - рекурсивно находятся только(!) конечные-самые глубокие папки, содержащие 2 маркера-папки: ...\Edge\User Data\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\ ...\Edge\User Data\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Cache" ...\Edge\User Data\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Code Cache" но, вот вышестоящая профиль-папка "Default" (в ней есть Cache и Code Cache) - не находится ...\Edge\User Data\Default\ ...\Edge\User Data\Default\Cache\ ...\Edge\User Data\Default\Code Cache\ (не единично, в некоторых профилях браузеров ситуация идентичная) В) При поиске от корня диска (перебор лог дисков) - тогда находятся все(!) варианты, и "глубокие" и "нужные" Приношу свои извинения, но прошу, помогите доработкой-кодом: когда и при поиске по пути c:\Users\%USERNAME%... находились все варианты (равно как если поиск от корня диска) Спасибо заметка 1
При использовании поиска по разным логическим дискам, где:
Код:
:AnyDo заметка 2
были проблемы с кодировкой при тестовом выводе Echo %1 >> "с:\test.txt" в начале скрипта и прописан chcp 866, сохранён как 866... но в "логе", полученные пути-папки, содержащие кириллицу, выходили крякозяброй (при выводе на экран все было ок) вылечилось странно - из скрипта создал новый файл для лога... PS Огромная вам благодарность Megaloman Давно не заходил на форум... и рад, что вы еще здесь, откликаетесь, помогаете людям Ваши уроки, снипеты, заметки и мне сильно помогали Спасибо вам еще раз! |
Цитата:
Цитата:
Вот вариант Код:
@Echo Off |
Цитата:
Благодарю за скорый ответ Megaloman ! За представленная вами v.2. Поиск вроде бы быстрее стал работать (субъективно) Megaloman - V.2 A. Вот тут есть недочет/фича/баг =) V.2 - находит И папки, если они входят в путь (например ..\Acrobat\Cache\Code Cache) V.1 - находит правильно: ..\Acrobat\Cache\ ..\Acrobat\Code Cache\ * где Acrobat - получается искомая папка профиля * а маркера-папки = "Code Cache" + "Cache" находятся внутри профиля Результат работы V.2 :
(1) "C:\Users\_________\AppData\LocalLow\Adobe\AcroCef\DC\Acrobat\Cache\"
(2) "C:\Users\_________\AppData\LocalLow\Adobe\AcroCef\DC\Acrobat\Cache\Cache" (3) "C:\Users\_________\AppData\LocalLow\Adobe\AcroCef\DC\Acrobat\Cache\Code Cache" ------ (1) "C:\Users\_________\AppData\LocalLow\Adobe\AcroCef\DC\Acrobat\Cache\" (2) "C:\Users\_________\AppData\LocalLow\Adobe\AcroCef\DC\Acrobat\Cache\blob_storage" (3) "C:\Users\_________\AppData\LocalLow\Adobe\AcroCef\DC\Acrobat\Cache\Code Cache" ------ (1) "C:\Users\_________\AppData\LocalLow\Adobe\AcroCef\DC\Acrobat\Cache\" (2) "C:\Users\_________\AppData\LocalLow\Adobe\AcroCef\DC\Acrobat\Cache\Code Cache" (3) "C:\Users\_________\AppData\LocalLow\Adobe\AcroCef\DC\Acrobat\Cache\Code Cache" ------ (1) "C:\Users\_________\AppData\LocalLow\Adobe\AcroCef\DC\Acrobat\Cache\" (2) "C:\Users\_________\AppData\LocalLow\Adobe\AcroCef\DC\Acrobat\Cache\Session Storage" (3) "C:\Users\_________\AppData\LocalLow\Adobe\AcroCef\DC\Acrobat\Cache\Code Cache" B. Поиск по всем логическим дискам Работает только если ставить слеш после двоеточия: BoxI=c:\ * Без слеша ищет исключительно в c:\Users\%USERNAME% * Первый пример работал с BoxI=c: ИТОГ Теперь даже не знаю: какой вариант лучше? Если выпилить лог из V.2, останется: Код:
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir /B /S /A:D "%BoxI%" ^|FIND /I "\%BoxA%"`) Do ( = может даже быстрее... Но баг-фича поиска по путям описанный выше, + c:\ И определить... какой вариант лучше, по командам-функциям/скорости/правильности... V.1 или V.2 сложно - знаний не хватает КОДИРОВКА + ЛОГ (РЕШЕНО)
Спасибо, походу по кодировке я справился ранее:
Пересоздал лог файл из cmd - видно изначальная кодировка файла лога была другая, а просматривал я в +другой нежели той, в которой cmd писал и в которой записан сам лог файл) Логи открывал в Notepad++ +ПРИМЕР CMD chcp 1251 (записан как UTF8) - лог открыт как ___ (np++ автоматом в UTF8 открывает) = все ок CMD chcp 866 (записан как 866) - лог открыт как 866 (np++ автоматом в ANSI открывает) = все ок А В ЛОГ ВЫВОЖУ ТАК: Код:
:AnyDo - задачи по логам особо не стояло - просто при тестах делаю вывод чтоб видеть * но ваш пример Megaloman по любому полезен 5+ НАХОДИТ ТОЛЬКО КОНЕЧНЫЕ ПАПКИ (РЕШЕНО)
По поводу основного бывшего вопроса "находит только конечные папки"
Тут моя вина Вы правы Megaloman! Изначально: Тестил ваш бланковый пример v.1 - все было ок Про "конечные папки" не обратил внимания в первых тестах И начал быстро на него навешивать свои call`ы для последующего встраивания Попутно тестировал, и тут только заметил "конечные" Подумал, что ваша ошибка... После вашего v.2 решил бланковый v.1 заново попробовать - и все работает - даже не поверил с 2-4 попыток)) = находит как и "вышестоящие" так и "конечные" Каюсь(моя ошибка в чем-то была, не нашел). +РЕЗУЛЬТАТ (1) "c:\Users\_________\AppData\Local\Microsoft\Edge\User Data\Default" (2) "c:\Users\_________\AppData\Local\Microsoft\Edge\User Data\Default\Cache" (3) "c:\Users\_________\AppData\Local\Microsoft\Edge\User Data\Default\Code Cache" (1) "c:\Users\_________\AppData\Local\Microsoft\Edge\User Data\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def" (2) "c:\Users\_________\AppData\Local\Microsoft\Edge\User Data\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Cache" (3) "c:\Users\_________\AppData\Local\Microsoft\Edge\User Data\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Code Cache" Можно, а зачем? Это ничего не меняет.
Цитата:
и goto :EOF в основном, на автомате, использую, когда список команд по CALL вызываю |
Время: 23:49. |
Время: 23:49.
© OSzone.net 2001-