Показать полную графическую версию : [решено] Удаление Opera из неизвестного текущего профиля
Добрый день.
На ПК установлена 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
Для продолжения нажмите любую клавишу . . .
Где допущена ошибка?
Если Вам требуется просто сформировать строку удаления, то можно попробовать вот таким способом:
@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
)
А возможно, чтобы скрипт перебрал все пути, ну и там, где присутствует Launcher.exe, подставился путь и произошло удаление?
Можете добавить проверку:
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
}
}
Спасибо большое.
А это реализуемо через cmd?
Подскажите еще пожалуйста, как скопировать папку в %appdata% во все профили, за исключением системных?
DJ Mogarych
06-12-2022, 08:43
Наверняка реализуемо, но зачем?
Если у вас есть домен, всеми этими задачами лучше заниматься через групповые политики.
Стоит задача через cmd, отсюда и такие танцы.
И копирование должно по требованию осуществляться, а не при заходе в систему.
А это реализуемо через cmd? »
Смотрим код для сценария выше;
как скопировать папку в %appdata% во все профили, за исключением системных? »
Смотрим код для сценария выше;
Или Вам нужно вот прямо готовое решение?
Где нажал и всё чики-чики?
Ребята, большое спасибо за помощь!
С копированием разобрался.
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?
И как еще исключить Public? »
Прочтите чуть более внимательней сообщение с указанным Мною кодом возможного сценария.
Прочтите чуть более внимательней сообщение с указанным Мною кодом возможного сценария. »
Прочитал внимательно. Исключил.
Не могу понять, где ошибка: почему все распаковывается в текущий профиль, создавая папки профилей, а при том же сценарии, копируется в папки профилей.
Не могу понять, где ошибка »
Приведите код полученного Вами сценария, при этом оформите его соответствующим тэгом.
Приведите код полученного Вами сценария, при этом оформите его соответствующим тэгом. »
В папке 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.