PDA

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


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

alpap
27-06-2019, 08:59
часть не работает »
сделайте примерно так:

@echo off
set "skey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
set "v=ProfileImagePath"

for /f "tokens=2*" %%a in ('reg query "%skey%" /s /v "%v%"^|findstr /rc:"^[ ][ ]*"') do call :spath "%%b" "AppData\Roaming\1C" "vrs-cache SICache Config ConfigSave DBNameCache"
pause& exit

:spath
for /d /r "%~1\%~2" %%A in (*) do (
for %%a in (%~3) do if /i "%%~nxA"=="%%~a" rd /s /q "%%A"
)
exit /b


(не забывайте что в "%%b" у вас полный путь, на всякий случай.)

greg zakharov
27-06-2019, 14:56
@echo off
setlocal enabledelayedexpansion
for /f "tokens=2* delims==" %%i in (
'wmic path win32_userprofile where^
"not sid like 's-1-5-__'" get localpath /value'
) do (
set "usr=%%~i"&set "usr=!usr:~,-1!\AppData\Roaming\1C"
for /f "delims=" %%j in ('dir /ad/b/s "!usr!"') do (
for %%k in (vrs-cache SICache Config ConfigSave DBNameCache) do (
if /i "%%~nj" equ "%%k" rd /q/s "%%~j"
)
)
)
endlocal
exit /b

Sub-Zero
01-07-2019, 16:03
Спасибо огромное всем откликнувшимся!!! :up :yahoo:

не забывайте что в "%%b" у вас полный путь » Да помню - полный путь к профилю юзера :)

Sub-Zero
04-02-2020, 17:59
Всем привет!
Снова прошу помощи и поднимаю эту тему. Помимо путей профилей пользователей понадобились еще их имена.
То есть на выходе цикла должно быть соответствующих друг другу 2 переменных: путь профиля + имя пользователя
Если делать через wmic то можно получить SIDы. По ним можно получить имена, а вот можно ли получить пути профилей - не осилил.
Есть конечно еще вариант из путей получать имена - смотреть все что справа до \.

alpap
04-02-2020, 21:06
путь профиля + имя пользователя »

@echo off
set "skey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
set "v=ProfileImagePath"

for /f "tokens=2*" %%a in ('reg query "%skey%" /s /v "%v%"^|findstr /rc:"^[ ][ ]*"') do call :spath "%%b"
pause& exit

:spath
echo Путь: %~1, имя: %~n1
exit /b

greg zakharov
04-02-2020, 21:46
При наличии sed:
reg query "hklm\software\microsoft\windows nt\currentversion\profilelist" /s /v profileimagepath | sed -nr "s/.*_sz(.*\\([^\\].*))/\2\1/Ip"

Sub-Zero
05-02-2020, 11:09
Друзья, огромное спасибо!!! :yahoo: Все работает. Единственное - исключить бы из отбора 3 системных аккаунта: systemprofile, LocalService и NetworkService и будет вообще огонь.

alpap
05-02-2020, 15:09
на каком-нибудь этапе, сами уже подумайте, как раз будет полезно в коде разобраться когда пойдет что-то не так или захочется очередного апгрейда.
findstr /v /c:"systemprofile" /c:"LocalService" /c:"NetworkService"

Sub-Zero
05-02-2020, 15:51
Цитата alpap:
на каком-нибудь этапе, сами уже подумайте »
Подумал... в итоге все запустилось как надо. Спасибо большущее!!! :up
Итоговый скрипт:
@echo off
set "skey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
set "v=ProfileImagePath"
for /f "tokens=2*" %%a in ('reg query "%skey%" /s /v "%v%"^|findstr /rc:"^[ ][ ]*"^|findstr /v /c:"systemprofile" /c:"LocalService" /c:"NetworkService"') do call :spath "%%b"
pause& exit
:spath
echo Путь: %~1, имя: %~n1
)
exit /b

greg zakharov
05-02-2020, 16:38
И опять-таки, с использованием sed:
reg query "hklm\software\microsoft\windows nt\currentversion\profilelist" /s /v profileimagepath | sed -nr "/root/!s/.*_sz(.*\\([^\\].*))/\2\1/Ip"




© OSzone.net 2001-2012