Показать полную графическую версию : [решено] Удалить файлы из папки с рандомным адресом
Добрый день.
Подскажите пожалуйста, как удалить файлы из папки, путь к которой постоянно меняется. Меняется не весь путь, а имя одной из папок в пути:
%APPDATA%\TESTAPP\logs\%рандомное_имя_папки%\ext\ - допустим, нужно удалить отсюда содержимое папки main и файл get.ini
Как будет выглядеть универсальный BAT, учитывая, что %рандомное_имя_папки% меняется.
Foreigner
25-01-2015, 16:43
Freem, При условии, что папка ext одна в %APPDATA%\TESTAPP\logs
@echo off
for /f "tokens=*" %%i in ('dir /b /s /ad "%APPDATA%\TESTAPP\logs\ext"') do pushd "%%i"
del get.ini
rd /s /q main
md main
popd
Freem, о каком именно приложении речь?
Freem, При условии, что папка ext одна в %APPDATA%\TESTAPP\logs »
Подозреваю, что нет.
о каком именно приложении речь? »
Можно взять в пример браузер Firefox. Имя папки профиля при установке на новую машину всегда разное.
Соотвественно путь будет %APPDATA%\Mozilla\Firefox\Profiles\f6rt55br.default\ext
При условии, что папка ext одна в %APPDATA%\TESTAPP\logs »
Их там, увы, предостаточно.
Freem, имена папок профилей, в том числе и «по умолчанию», находятся в файле:
%APPDATA%\Mozilla\Firefox\profiles.ini
И да — профилей («папок с рандомным адресом») может быть заметно больше одного.
Habetdin
25-01-2015, 17:19
Freem, в файле %appdata%\Mozilla\Firefox\profiles.ini перечислены все профили в виде секций ProfileN с параметром Path - путем к папке. (Плюс параметр IsRelative - относительный ли сей путь). Профиль по умолчанию - с Name=default, но, кажется, имя может быть изменено пользователем.
И да — профилей («папок с рандомным адресом») может быть заметно больше одного. »
Это я понимаю. Но в моей задаче "профиль" всегда один, но папка имеет разные имена. Ее имя нужно учесть и "пройти" дальше по адресу, применив команды удаления.
В таком случае, можно сделать батник, чтобы он брал имя профиля по умолчанию из profiles.ini и переходил по нужному пути...
Помогли решить задачку, вот таким образом (на примере с Firefox):
@echo off
SetLocal EnableDelayedExpansion
FOR /F "usebackq" %%a IN (%appdata%\Mozilla\Firefox\profiles.ini) DO (
set var=%%a
If Exist "%appdata%\Mozilla\Firefox\Profiles\!var:*Profiles/=!\ " (
rmdir /s /q %appdata%\Mozilla\Firefox\Profiles\!var:*Profiles/=!\extensions
del %appdata%\Mozilla\Firefox\Profiles\!var:*Profiles/=!\prefs.js
)Else (echo searching...)
)
kveresov
28-05-2019, 12:11
Скажите пожалуйста,вот смотрите, идея такая:
Если при создании sfx архива прописать %username% то всё ясно...автоматом апределит юзера C:\Users\%username%\AppData\Roaming\Mozilla\Firefox\Profiles\ но как быть с папкой в папке Profiles, у которой обычно рандомное имя? то-есть мне надо чтоб файлы из архива автоматом с заменой извлеклись в конечную папку, имя которой всегда разное..Есть какая-то ещё переменная типа %foldername%?
Тоесть, я запаковываю в sfx (.exe) архив содержимое папки Profiles\3dghetm допустим да, но после чистой установки firefox и первого запуска в папке profiles создаётся папки с уже другим именем понимаете да? и мне надо чтоб sfx архив както определил имя последней папки и распаковал туда всё..Какая есть переменная для конечной неизвестной папки?
Пример: C:\Users\%username%\AppData\Roaming\Mozilla\Firefox\Profiles\%foldername%
понимаете да? »
нет
определил имя последней папки »
Создайте на диске C:\ папку "Papka" в ней папку "B" и папку "C"
таким кодом вы найдете конечную папку "C"
@echo off
for /f "delims=" %%a in ('dir /ad/b/s "C:\Papka"') do set "d=%%a"
echo %d%
pause
переименуйте папку "C" в "A" и теперь конечной станет "B"
понимаете да?
(и это я уже молчу что конечная она может и по размеру, дате и т.д.)
можно выйти из этого положения, если в ...\Profiles\ создать папку с фиксированным именем, а уже в ней будет одна единственная искомая и изменяемым именем, код выше ее без труда определит.
но как быть с папкой в папке Profiles, у которой обычно рандомное имя? »
У неё вовсе не «рандомное», а вполне определённое имя. Читаете файл %AppData%\Mozilla\Firefox\profiles.ini, ищете раздел, в котором содержится параметр Default со значением «1». Из этого раздела получаете значение параметра Path. Проверяете, чему в этом разделе равно значение параметра IsRelative. Если оно отсутствует или равно «0», используете значение параметра Path как есть. Если оно равно «1», то результирующий путь получаете относительно каталога, в котором содержится файл profiles.ini.
http://kb.mozillazine.org/Profiles.ini_file
kveresov
28-05-2019, 13:55
ниче не понял)Допустим сейчас в папке profiles папка pwddt43j.Profiles981mmv но в чистом браузере при первом запуске создастся другая ведь
Ну допустим вот:
[Install308046B0AF4A39CB]
Default=Profiles/pwddt43j.ProfilesKonst
Locked=1
[Profile0]
Name=pwddt43j.ProfilesKonst
IsRelative=1
Path=Profiles/pwddt43j.ProfilesKonst
Default=1
[General]
StartWithLastProfile=1
Version=2
[InstallE7CF176E110C211B]
Default=Profiles/pwddt43j.ProfilesKonst
Locked=1
kveresov, в данном случае параметр Default со значением 1 у Вас находится в разделе [Profile0]. Параметр Path в данном разделе у Вас имеет значение Profiles/pwddt43j.ProfilesKonst. Параметр IsRelative в данном разделе также присутствует и имеет значение 1. Поэтому Вы получаете результирующий путь как путь к файлу profiles.ini плюс Profiles/pwddt43j.ProfilesKonst. Именно данный путь используется для умолчального профиля.
kveresov
28-05-2019, 14:19
так получается как мне надо прописать в sfx полный путь?
отредактируйте: : C:\Users\%username%\AppData\Roaming\Mozilla\Firefox\Profiles\
Вы меня вообще правильно поняли? мне нужно как бы в пару кликов восстановить профиль с помощью sfx архива даже на другом компе
kveresov, не делайте так:
в пару кликов восстановить профиль с помощью sfx архива даже на другом компе »
Делайте так, как я описал. Хотите — на WSH, хотите — на PowerShell.
kveresov
28-05-2019, 15:36
короче, ребята, я понял, всё проще! Идём в C:\Users\(username)\AppData\Roaming\Mozilla\Firefox тут лежат: папка Profiles, файлы: Progiles.ini и installs.ini
Выделяем эти три объекта, добавляем в архив, создаём SFX архив, в путь распаковки пишем C:\Users\%username%\AppData\Roaming\Mozilla\Firefox в режимах ставим скрывать всё, перезаписываеть без запросов..Всё! запускаем архив exe и независимо чисто поставленный firefox или с имеющимся профилем -всё равно всё перепишет и firefox можем запускать уже готовый с нашими настройками
kveresov, и те, кто попытаются обновить свой Firefox Вашим прибамбасом, скажут потом много ласковых и незлобивых слов в Ваш адрес.
kveresov
28-05-2019, 18:17
Цитата Iska:
и те, кто попытаются обновить свой Firefox Вашим прибамбасом, скажут потом много ласковых и незлобивых слов в Ваш адрес. »
А почему Вы иронизируете? я например на виртуальной машине с чистым firefox попробовал так -всё ок..все настройки восстановились извлекшись из архива
.Но может сперва перед созданием архива бы кэш браузера почистить..это да, а так-то что плохого
То, что Вы подобным подходом обрубаете существующие профили.
kveresov
28-05-2019, 19:44
Цитата Iska:
То, что Вы подобным подходом обрубаете существующие профили. »
Не понимаю...всё работает отлично! Установил начисто firefox, запустил SFX вот тебе и настроено всё
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.