Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Удалить файлы из папки с рандомным адресом (http://forum.oszone.net/showthread.php?t=294444)

Freem 25-01-2015 16:16 2461081

Удалить файлы из папки с рандомным адресом
 
Добрый день.

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

%APPDATA%\TESTAPP\logs\%рандомное_имя_папки%\ext\ - допустим, нужно удалить отсюда содержимое папки main и файл get.ini

Как будет выглядеть универсальный BAT, учитывая, что %рандомное_имя_папки% меняется.

Foreigner 25-01-2015 16:43 2461090

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 2461101

Freem, о каком именно приложении речь?

Цитата:

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

Подозреваю, что нет.

Freem 25-01-2015 17:12 2461106

Цитата:

Цитата Iska
о каком именно приложении речь? »

Можно взять в пример браузер Firefox. Имя папки профиля при установке на новую машину всегда разное.
Соотвественно путь будет %APPDATA%\Mozilla\Firefox\Profiles\f6rt55br.default\ext
Цитата:

Цитата Foreigner
При условии, что папка ext одна в %APPDATA%\TESTAPP\logs »

Их там, увы, предостаточно.

Iska 25-01-2015 17:19 2461110

Freem, имена папок профилей, в том числе и «по умолчанию», находятся в файле:
Код:

%APPDATA%\Mozilla\Firefox\profiles.ini
И да — профилей («папок с рандомным адресом») может быть заметно больше одного.

Habetdin 25-01-2015 17:19 2461112

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

Freem 25-01-2015 17:25 2461117

Цитата:

Цитата Iska
И да — профилей («папок с рандомным адресом») может быть заметно больше одного. »

Это я понимаю. Но в моей задаче "профиль" всегда один, но папка имеет разные имена. Ее имя нужно учесть и "пройти" дальше по адресу, применив команды удаления.
В таком случае, можно сделать батник, чтобы он брал имя профиля по умолчанию из profiles.ini и переходил по нужному пути...

Freem 26-01-2015 00:35 2461321

Помогли решить задачку, вот таким образом (на примере с 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 2873357

Скажите пожалуйста,вот смотрите, идея такая:
Если при создании 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 2873370

Цитата:

Цитата kveresov
понимаете да? »

нет
Цитата:

Цитата kveresov
определил имя последней папки »

Создайте на диске 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 2873371

Цитата:

Цитата kveresov
но как быть с папкой в папке 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 2873377

ниче не понял)Допустим сейчас в папке 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 2873380

kveresov, в данном случае параметр Default со значением 1 у Вас находится в разделе [Profile0]. Параметр Path в данном разделе у Вас имеет значение Profiles/pwddt43j.ProfilesKonst. Параметр IsRelative в данном разделе также присутствует и имеет значение 1. Поэтому Вы получаете результирующий путь как путь к файлу profiles.ini плюс Profiles/pwddt43j.ProfilesKonst. Именно данный путь используется для умолчального профиля.

kveresov 28-05-2019 14:19 2873381

так получается как мне надо прописать в sfx полный путь?
отредактируйте: : C:\Users\%username%\AppData\Roaming\Mozilla\Firefox\Profiles\
Вы меня вообще правильно поняли? мне нужно как бы в пару кликов восстановить профиль с помощью sfx архива даже на другом компе

Iska 28-05-2019 14:51 2873388

kveresov, не делайте так:
Цитата:

Цитата kveresov
в пару кликов восстановить профиль с помощью sfx архива даже на другом компе »

Делайте так, как я описал. Хотите — на WSH, хотите — на PowerShell.

kveresov 28-05-2019 15:36 2873394

короче, ребята, я понял, всё проще! Идём в 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 2873403

kveresov, и те, кто попытаются обновить свой Firefox Вашим прибамбасом, скажут потом много ласковых и незлобивых слов в Ваш адрес.

kveresov 28-05-2019 18:17 2873410

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

Iska 28-05-2019 19:12 2873413

То, что Вы подобным подходом обрубаете существующие профили.

kveresov 28-05-2019 19:44 2873417

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

Iska 28-05-2019 20:30 2873427

Цитата:

Цитата kveresov
Не понимаю...всё работает отлично! »

С Вашей точки зрения — возможно.


Время: 21:12.

Время: 21:12.
© OSzone.net 2001-