blacks2
14-05-2022, 05:28
Здравствуйте
Прошу помощи с 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... скорее всего создает доп. нагрузку/время на анализ-сравнение
но.. другого решения в голове нет, а реализации тем более(
Помогите пожалуйста скриптом
Всем откликнувшимся, заранее, огромное спасибо!
Зачем вообще?
- часть в общий 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
- остальные установил посмотреть структуру папок профилей
Прошу помощи с 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... скорее всего создает доп. нагрузку/время на анализ-сравнение
но.. другого решения в голове нет, а реализации тем более(
Помогите пожалуйста скриптом
Всем откликнувшимся, заранее, огромное спасибо!
Зачем вообще?
- часть в общий 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
- остальные установил посмотреть структуру папок профилей