Войти

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


Garold
05-12-2022, 18:05
Добрый день.
На ПК установлена Opera, не известно из какого профиля.
Подскажите пожалуйста как перебрать все профили, чтобы отработал скрипт удаления в том профиле из какого был установлен браузер? на примере IvanovII. Командная строка удаления выглядит так:
C:\Users\IvanovII\AppData\Local\Programs\Opera\Launcher.exe" /uninstall /silent

Написал CMD:
: Удаление процесса Opera

taskkill /F /IM opera.exe

cd "C:\Users\"

for /f %%d in ('dir /B *') do (
set Profile=%%d
)

%Profile%\AppData\Local\Programs\Opera\Launcher.exe /uninstall /silent


Происходит следующее выполнение:

C:\Windows\System32>cd "C:\Users\"

C:\Users>for /F %d in ('dir /B *') do (set Profile=%d )

C:\Users>(set Profile=auditor )

C:\Users>(set Profile=gendir )

C:\Users>(set Profile=IvanovII )

C:\Users>(set Profile=Public )

C:\Users>(set Profile=User )

C:\Users>User\AppData\Local\Programs\Opera\Launcher.exe /uninstall /silent
Системе не удается найти указанный путь.

C:\Users>pause
Для продолжения нажмите любую клавишу . . .

Где допущена ошибка?

NickM
05-12-2022, 18:26
Если Вам требуется просто сформировать строку удаления, то можно попробовать вот таким способом:
@echo off
SetLocal EnableExtensions

For /F "Tokens=2*" %%I In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /V ProfilesDirectory') Do Set Profiles=%%J
Call Set Profiles=%Profiles%

For /F "Delims=" %%I In ('Dir /B /AD-S-H "%Profiles%" ^| FindStr /V /B /I /C:"All Users" /C:"Public"') Do (
echo."%Profiles%\%%I\AppData\Local\Programs\Opera\Launcher.exe" /uninstall /silent
)

Garold
05-12-2022, 18:40
А возможно, чтобы скрипт перебрал все пути, ну и там, где присутствует Launcher.exe, подставился путь и произошло удаление?

NickM
05-12-2022, 19:01
Можете добавить проверку:
IF EXIST
Только Вам следует понимать, что анинсталлер отработает от того пользователя, от которого будет запущён сценарий, и это будет не одно и то же, как запустить его от того пользователя, у которого установлено приложение.

DJ Mogarych
05-12-2022, 21:09
Powershell v5:

#Requires -RunAsAdministrator

dir (get-item $env:USERPROFILE).Parent.FullName -directory |% {
if (test-path ($p = $_.FullName + "\AppData\Local\Programs\Opera\Launcher.exe")) {
& $p /uninstall /silent
}
}

Garold
06-12-2022, 08:40
Спасибо большое.
А это реализуемо через cmd?

Подскажите еще пожалуйста, как скопировать папку в %appdata% во все профили, за исключением системных?

DJ Mogarych
06-12-2022, 08:43
Наверняка реализуемо, но зачем?
Если у вас есть домен, всеми этими задачами лучше заниматься через групповые политики.

Garold
06-12-2022, 08:51
Стоит задача через cmd, отсюда и такие танцы.
И копирование должно по требованию осуществляться, а не при заходе в систему.

NickM
06-12-2022, 10:00
А это реализуемо через cmd? »
Смотрим код для сценария выше;

как скопировать папку в %appdata% во все профили, за исключением системных? »
Смотрим код для сценария выше;

Или Вам нужно вот прямо готовое решение?
Где нажал и всё чики-чики?

Garold
06-12-2022, 10:42
Ребята, большое спасибо за помощь!
С копированием разобрался.

for /f "delims=" %%a in ('dir/b/ad-h "%userprofile%\..\*"^|findstr/ixvc:"All Users"') do (
xcopy /q/s/y/r/h "\\share\TEST\*" "%userprofile%\..\%%a\AppData\Roaming\TEST\"
)



Помогите пожалуйста, не могу разобраться, где допустил ошибку:

for /f "delims=" %%a in ('dir/b/ad-h "%userprofile%\..\*"^|findstr/ixvc:"All Users"') do (
"%~dp0Settings\RAR.exe" x -u -y "%~dp0Settings\Skript.rar" "%userprofile%\..\%%a\AppData\Roaming\Local\"
)

Все это дело распаковывается:
В профиль, из которого запущен батник:

c:\users\IvanovII\auditor
c:\users\IvanovII\gendir
c:\users\IvanovII\Public
c:\users\IvanovII\User
c:\users\IvanovII\IvanovII

И как еще исключить Public?

NickM
06-12-2022, 11:07
И как еще исключить Public? »
Прочтите чуть более внимательней сообщение с указанным Мною кодом возможного сценария.

Garold
06-12-2022, 11:47
Прочтите чуть более внимательней сообщение с указанным Мною кодом возможного сценария. »

Прочитал внимательно. Исключил.

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

NickM
06-12-2022, 11:49
Не могу понять, где ошибка »
Приведите код полученного Вами сценария, при этом оформите его соответствующим тэгом.

Garold
06-12-2022, 12:12
Приведите код полученного Вами сценария, при этом оформите его соответствующим тэгом. »

В папке Settings лежит архив ну и соответственно архиватор. Сценарий отрабатывает, но распаковывает в профиль УЗ, из которой был запущен сценарий, создавая папки профилей.


for /f "delims=" %%a in ('dir/b/ad-h "%userprofile%\..\*"^|findstr/ixvc:"All Users" /C:"Public"') do (
"%~dp0Settings\RAR.exe" x -u -y "%~dp0Settings\Yandex.rar" "%userprofile%\..\%%a\AppData\Roaming\Local\"
)
pause



UPD: Поправил путь куда извлекать на: "c:\users\\..\%%a\AppData\Local\"
и все получилось.

Коллеги, большое спасибо!




© OSzone.net 2001-2012