|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как получить путь к профилю другого пользователя ? |
|
CMD/BAT - [решено] Как получить путь к профилю другого пользователя ?
|
Старожил Сообщения: 440 |
Профиль | Отправить PM | Цитировать В общем пишу батник для сохранения списка пользователей и некоторых настроек.
И столкнулся с такой проблемой: у некоторых пользователей профиль хранится не в папке с именем пользователя а в папке вида user.SERVER. Соответственно чтоб скопировать какие-то файлы из профиля, мне нужно точно знать путь к профилю а не просто подставлять в стандартный путь имя пользователя. Но вот как получить этот путь ? |
|
Отправлено: 00:47, 25-04-2009 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать например, при помощи PsGetSid:
@Echo Off Set $UserName=MyDomain\UserName For /F "Tokens=1" %%i In ('2^>Nul PsGetSid "%$UserName%"^|FindStr /BIC:"S-"') Do Set $UserSID=%%i For /F "Tokens=1,2*" %%i In ('REG Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%$UserSID%"^|FindStr /BIRC:" *ProfileImagePath "') Do Set $UserProfile=%%k Echo ------------------------------------------------------------- Echo User Name : %$UserName% Echo User SID : %$UserSID% Echo User Profile : %$UserProfile% |
Отправлено: 07:44, 25-04-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 440
|
Профиль | Отправить PM | Цитировать Спасибо. То что нужно.
|
Отправлено: 16:38, 25-04-2009 | #3 |
Старожил Сообщения: 440
|
Профиль | Отправить PM | Цитировать Вот кстати то что получилось в результате. Может кому пригодится.
users_copy.bat @echo off SetLocal EnableDelayedExpansion set home=%cd% set pspath=%home%\PsTools rd /s /q users md users cd /d users for /f "tokens=1,2,3 delims= " %%A in ('net user') do ( Set /A count +=1 call :copy_user %%A Set /A count +=1 call :copy_user %%B Set /A count +=1 call :copy_user %%C ) echo Exit pause exit :copy_user chcp 1251 find /i "%1" %home%\exclusions.txt if %errorlevel%==1 ( echo errorlevel=%errorlevel% md %1 call :copy_profile %1 ) goto :eof :copy_profile For /F "Tokens=1" %%i In ('2^>Nul %pspath%\PsGetSid "%1"^|FindStr /BIC:"S-"') Do Set $UserSID=%%i For /F "Tokens=1,2*" %%i In ('REG Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%$UserSID%"^|FindStr /BIRC:" *ProfileImagePath "') Do Set $UserProfile=%%k echo user=%1 echo $UserSID=%$UserSID% echo $UserProfile=%$UserProfile% for /f "tokens=1,*" %%A in (%home%\settings.txt) do ( echo %%A | xcopy /E "%$UserProfile%\%%B" "%1\%%B" ) goto :eof exclusions.txt ------------------------------------------------------------------------------- Команда Учетные выполнена записи пользователей успешно успешно. ASPNET IUSR_SERVER IWAM_SERVER SUPPORT_388945a0 test Гость f перед строкой если надо скопировать только конкретный файл d если всю директорию settings.txt для примера |
Отправлено: 10:41, 26-04-2009 | #4 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать mitiya, еще один вариант, exclusions.txt (только имена пользователей) - в OEM, settings.txt (только путь к файлу/папке) - в WIN кодировке:
@Echo Off SetLocal EnableDelayedExpansion Set Home=%cd% If Exist users RD /S /Q users MD users CD users For /F "Tokens=1,2 Delims= " %%i In ('WMIC UserAccount Get Name^,SID^,Status^|FindStr /IERC:"OK *"') Do Call :CopyUserProfile %%i %%j Exit :CopyUserProfile FindStr /IXC:"%1" %Home%\exclusions.txt If Not ErrorLevel 1 GoTo :EOF MD %1 CHCP 1251 For /F "Tokens=1,2*" %%i In ('REG Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%2"^|FindStr /BIRC:" *ProfileImagePath"') Do Call Set $UserProfile=%%k For /F "UseBackQ Tokens=* Delims=" %%A In ("%Home%\settings.txt") Do If Exist "%$UserProfile%\%%A" XCopy /E/H "%$UserProfile%\%%A" "%1\%%A\">Nul CHCP 866 GoTo :EOF |
|
Отправлено: 16:19, 26-04-2009 | #5 |
Старожил Сообщения: 440
|
Профиль | Отправить PM | Цитировать Да этот код значительно меньше, но у меня вот путь
Application Data\1C\1Cv81\ibases.v8i скопировался в Application Data\1C\1Cv81\ibases.v8i\ibases.v8i плюс еще папки суда скопировались из папки 1Cv81. предлагаю перенести обсуждение сюда так как есть еще пара проблем не относящихся к пути к профилю |
Отправлено: 21:26, 26-04-2009 | #6 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать mitiya, дублировать посты не буду - обращайтесь к модераторам, если есть "пара проблем" - формулируйте, из вашей новой темы их не видно
|
Отправлено: 03:18, 27-04-2009 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - как получить путь из ярлыка ? | mitiya | Скриптовые языки администрирования Windows | 2 | 08-07-2009 15:09 | |
Доступ - [решено] как настроить путь загрузки Windows с другого харда | illusionmgs | Microsoft Windows 2000/XP | 11 | 07-02-2009 20:49 | |
Как получить IP-адрес из другого региона Росси? | Yewgeniy | Хочу все знать | 4 | 18-03-2007 12:24 | |
[решено] Изменение пути к профилю пользователя | AnaStas | Microsoft Windows 2000/XP | 2 | 13-11-2006 11:56 | |
Профиль пользователя -- путь к профилю. | reddestfox | Microsoft Windows 2000/XP | 2 | 24-01-2006 23:25 |
|