Войти

Показать полную графическую версию : [решено] Удалить файлы из папки с рандомным адресом


Страниц : [1] 2

Freem
25-01-2015, 16:16
Добрый день.

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

%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

Iska
25-01-2015, 17:04
Freem, о каком именно приложении речь?

Freem, При условии, что папка ext одна в %APPDATA%\TESTAPP\logs »
Подозреваю, что нет.

Freem
25-01-2015, 17:12
о каком именно приложении речь? »
Можно взять в пример браузер Firefox. Имя папки профиля при установке на новую машину всегда разное.
Соотвественно путь будет %APPDATA%\Mozilla\Firefox\Profiles\f6rt55br.default\ext
При условии, что папка ext одна в %APPDATA%\TESTAPP\logs »
Их там, увы, предостаточно.

Iska
25-01-2015, 17:19
Freem, имена папок профилей, в том числе и «по умолчанию», находятся в файле:
%APPDATA%\Mozilla\Firefox\profiles.ini
И да — профилей («папок с рандомным адресом») может быть заметно больше одного.

Habetdin
25-01-2015, 17:19
Freem, в файле %appdata%\Mozilla\Firefox\profiles.ini перечислены все профили в виде секций ProfileN с параметром Path - путем к папке. (Плюс параметр IsRelative - относительный ли сей путь). Профиль по умолчанию - с Name=default, но, кажется, имя может быть изменено пользователем.

Freem
25-01-2015, 17:25
И да — профилей («папок с рандомным адресом») может быть заметно больше одного. »
Это я понимаю. Но в моей задаче "профиль" всегда один, но папка имеет разные имена. Ее имя нужно учесть и "пройти" дальше по адресу, применив команды удаления.
В таком случае, можно сделать батник, чтобы он брал имя профиля по умолчанию из profiles.ini и переходил по нужному пути...

Freem
26-01-2015, 00:35
Помогли решить задачку, вот таким образом (на примере с 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%

alpap
28-05-2019, 13:25
понимаете да? »
нет
определил имя последней папки »
Создайте на диске 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\ создать папку с фиксированным именем, а уже в ней будет одна единственная искомая и изменяемым именем, код выше ее без труда определит.

Iska
28-05-2019, 13:31
но как быть с папкой в папке 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

Iska
28-05-2019, 14:13
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 архива даже на другом компе

Iska
28-05-2019, 14:51
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 можем запускать уже готовый с нашими настройками

Iska
28-05-2019, 17:27
kveresov, и те, кто попытаются обновить свой Firefox Вашим прибамбасом, скажут потом много ласковых и незлобивых слов в Ваш адрес.

kveresov
28-05-2019, 18:17
Цитата Iska:
и те, кто попытаются обновить свой Firefox Вашим прибамбасом, скажут потом много ласковых и незлобивых слов в Ваш адрес. »
А почему Вы иронизируете? я например на виртуальной машине с чистым firefox попробовал так -всё ок..все настройки восстановились извлекшись из архива
.Но может сперва перед созданием архива бы кэш браузера почистить..это да, а так-то что плохого

Iska
28-05-2019, 19:12
То, что Вы подобным подходом обрубаете существующие профили.

kveresov
28-05-2019, 19:44
Цитата Iska:
То, что Вы подобным подходом обрубаете существующие профили. »
Не понимаю...всё работает отлично! Установил начисто firefox, запустил SFX вот тебе и настроено всё




© OSzone.net 2001-2012