CMD/BAT - [решено] Вывод путей профилей пользователей компьютера

Ответить
 • Просмотры: 1
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Вывод путей профилей пользователей компьютера

Сообщение Iska »

Цитата Sub-Zero:



часть не работает
CMD/BAT - [решено] Вывод путей профилей пользователей компьютера




сделайте примерно так:



Код:

Код: Выделить всё

@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

Re: CMD/BAT - [решено] Вывод путей профилей пользователей компьютера

Сообщение greg zakharov »

Код:

Код: Выделить всё

@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

Re: CMD/BAT - [решено] Вывод путей профилей пользователей компьютера

Сообщение Sub-Zero »

Спасибо огромное всем откликнувшимся!!! Изображение Изображение




Цитата alpap:



не забывайте что в "%%b" у вас полный путь
CMD/BAT - [решено] Вывод путей профилей пользователей компьютера




Да помню - полный путь к профилю юзера Изображение
Аватара пользователя
Sub-Zero

Re: CMD/BAT - [решено] Вывод путей профилей пользователей компьютера

Сообщение Sub-Zero »

Всем привет!

Снова прошу помощи и поднимаю эту тему. Помимо путей профилей пользователей понадобились еще их имена.

То есть на выходе цикла должно быть соответствующих друг другу 2 переменных: путь профиля + имя пользователя

Если делать через wmic то можно получить SIDы. По ним можно получить имена, а вот можно ли получить пути профилей - не осилил.

Есть конечно еще вариант из путей получать имена - смотреть все что справа до \.
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Вывод путей профилей пользователей компьютера

Сообщение alpap »

Цитата Sub-Zero:



путь профиля + имя пользователя
CMD/BAT - [решено] Вывод путей профилей пользователей компьютера






Код:

Код: Выделить всё

@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

Re: CMD/BAT - [решено] Вывод путей профилей пользователей компьютера

Сообщение greg zakharov »

При наличии sed:



Код:

Код: Выделить всё

reg query "hklm\software\microsoft\windows nt\currentversion\profilelist" /s /v profileimagepath | sed  -nr "s/.*_sz(.*\\([^\\].*))/\2\1/Ip"
Аватара пользователя
Sub-Zero

Re: CMD/BAT - [решено] Вывод путей профилей пользователей компьютера

Сообщение Sub-Zero »

Друзья, огромное спасибо!!! Изображение Все работает. Единственное - исключить бы из отбора 3 системных аккаунта: systemprofile, LocalService и NetworkService и будет вообще огонь.
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Вывод путей профилей пользователей компьютера

Сообщение alpap »

на каком-нибудь этапе, сами уже подумайте, как раз будет полезно в коде разобраться когда пойдет что-то не так или захочется очередного апгрейда.



Код:

Код: Выделить всё

findstr /v /c:"systemprofile" /c:"LocalService" /c:"NetworkService"
Аватара пользователя
Sub-Zero

Re: CMD/BAT - [решено] Вывод путей профилей пользователей компьютера

Сообщение Sub-Zero »

Цитата alpap:

на каком-нибудь этапе, сами уже подумайте
CMD/BAT - [решено] Вывод путей профилей пользователей компьютера


Подумал... в итоге все запустилось как надо. Спасибо большущее!!! Изображение

Итоговый скрипт:



Код:

Код: Выделить всё

@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

Re: CMD/BAT - [решено] Вывод путей профилей пользователей компьютера

Сообщение greg zakharov »

И опять-таки, с использованием sed:



Код:

Код: Выделить всё

reg query "hklm\software\microsoft\windows nt\currentversion\profilelist" /s /v profileimagepath | sed  -nr "/root/!s/.*_sz(.*\\([^\\].*))/\2\1/Ip"
Ответить

Вернуться в «Скриптовые языки администрирования Windows»