Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Найти все папки, содержащих 2 определенные папки (кеш, бекап)

Ответить
Настройки темы
CMD/BAT - Найти все папки, содержащих 2 определенные папки (кеш, бекап)

Пользователь


Сообщения: 97
Благодарности: 2

Профиль | Отправить PM | Цитировать


Здравствуйте

Прошу помощи с CMD скриптом


КРАТКО/АЛГОРИТМ
Код: Выделить весь код
в назначенном пути

    найти все "%папкиХ%" (рекурсия)
        в корне которых, присутствует одновременно папка "%папкаА%" + "%папкаB%"

            к всем найденным "%папкиХ%"
            применить произвольный код

завершение


ПОДРОБНО
В моей системе, семье, браузеры на основе движка Chromium
Имена-папки профилей пользователей разные, добавляются/удаляются

Цель: очищать кеш, бекапы
в папках профилей, имя-путь которых не знаю/меняется

Как найти профиль, не зная его названия?
- В каждом профиле пользователя, на движке Chromium, есть стандартные папки
- значит, папку профиля можно найти если в нем есть "папкаА"+"папкаB"

Далее: к всем найденным папкиХ (где есть "папкаА"+"папкаB")
применить произвольный код (на бекап и/или очистку)

* папка профиля - мои профили названы англ буквами
но семья может... и минус, тире, @, пробел, кириллицу добавить в название…




Написать самостоятельно не смогу:
пытался… искал решение, собирал из отрывков снипетов...
навешивал на алгоритм команды...
...так осилить и не смог
решил обратиться к вам форумчане за помощью.


КАРКАС/АЛГОРИТМ
Код: Выделить весь код
@echo off & chcp 866
:: EnableDelayedExpansion - желательно обойтись без него

:: где искать - "переключатель" (all =на всех логических дисках)
    "search_mode=all"

:: где искать - папка по умолчанию
    "search_path=c:\Users\%USERNAME%\AppData"

:: папки-маркеры расположенные в папке-профиле
    "search_marker_dir1=Cache"
    "search_marker_dir2=Code Cache"

:: если «search_mode=all» - поиск по всем лог. дискам / не равен – поиск по умолчанию
    if /i "%search_mode%"=="all" (
         for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do 
            set search_path=%%d
            call search_pfofiles
        ) else (
            call search_pfofiles
        )
    goto :exittt

:: ...
  
:exittt
    echo OK
    pause & exit


:search_pfofiles
    for /D /R "%search_path%" /d поиск папки %%f рекурсивно in ( * ) do (

        if exist "%%f\%search_marker_dir1%\" if exist "%%f\%search_marker_dir2%\" (
        
            :: где %%f = найденЫЕ точно папкИ-профилей
            :: произвольные действия-команды
            echo %%f >> naprimer_test_file.txt
        )
    )
    goto :eof

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\
User Data\Default\BudgetDatabase\
User Data\Default\Cache\
User Data\Default\Code Cache\
User Data\Default\databases\
User Data\Default\GPUCache\
User Data\Default\Service Worker\
User Data\Default\Sessions\
User Data\Default\Session Storage\

* плюс если кому понадобится, заметка: пути профилей Default по умолчанию
Код: Выделить весь код
c:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default\
c:\Users\%USERNAME%\AppData\Local\Chromium\User Data\Default\
c:\Users\%USERNAME%\AppData\Local\BraveSoftware\Brave-Browser\Default\
c:\Users\%USERNAME%\AppData\Local\Yandex\YandexBrowser\User Data\Default\
c:\Users\%USERNAME%\AppData\Local\Microsoft\Edge\User Data\Default\
c:\Users\%USERNAME%\AppData\Local\Vivaldi\User Data\Default\
c:\Users\%USERNAME%\AppData\Local\Maxthon\Application\User Data\Default\
c:\Users\%USERNAME%\AppData\Local\Opera\Opera\Default\

c:\Users\%USERNAME%\AppData\Roaming\Opera\Opera\ 
c:\Users\%USERNAME%\AppData\Roaming\Opera Software\Opera\
c:\Users\%USERNAME%\AppData\Roaming\Opera Software\Opera Beta\
c:\Users\%USERNAME%\AppData\Roaming\Opera Software\Opera Stable\
(профиль в Roaming, а кеш по умолчанию хранится в Local...)

c:\Users\%USERNAME%\AppData\Roaming\Mozilla\Firefox\Profiles\*******.default-release
c:\Users\%USERNAME%\AppData\Roaming\Mozilla\Firefox\Profiles\*******.default

Зачем столько браузеров?
- постоянных 2-3
- остальные установил посмотреть структуру папок профилей

Отправлено: 05:28, 14-05-2022

 

Ветеран


Contributor


Сообщения: 2521
Благодарности: 1581

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Папка для поиска"
	Set "BoxA=Папка A"
	Set "BoxB=Папка B"

	If Exist "%BoxIn%\%BoxA%\" If Exist "%BoxIn%\%BoxB%\" Call :AnyDo "%BoxIn%" "%BoxIn%\%BoxA%\" "%BoxIn%\%BoxB%"

	FOR /F "usebackq delims=" %%d IN (`2^>nul Dir /B /S /A:D "%BoxIn%\"`) Do (
		If Exist "%%d\%BoxA%\" If Exist "%%d\%BoxB%\" Call :AnyDo "%%d" "%%d\%BoxA%" "%%d\%BoxB%" 
	)
Pause
Exit /B 0

:AnyDo
	Echo -------- Что то делаем  %1
	Echo %2
	Echo %3
Exit /B 0

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:26, 14-05-2022 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Найти все папки, содержащих 2 определенные папки (кеш, бекап)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2012 R2 - Запрет на удаление папки, но разрешить все действия внутри папки subrain Windows Server 2012/2012 R2 7 17-02-2021 09:38
CMD/BAT - [решено] Создание папки из части имени файла и перемещение в нее файлов содержащих эту часть artbiokron@vk Скриптовые языки администрирования Windows 10 17-03-2020 10:32
Прочие - бекап сетевой папки на яндекс диск (webdav) TGR Программное обеспечение Windows 4 19-06-2017 22:18
CMD/BAT - Копирование бекап-данных с папки Акросина в папки облаков weiyun.com - прошу помощи! novard Скриптовые языки администрирования Windows 0 14-11-2013 05:17
Скрипт качает бекап с фтп. Как застравить качать в разные папки? mooseyaka Программирование и базы данных 4 28-05-2007 13:41




 
Переход