Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как получить путь к профилю другого пользователя ?

Ответить
Настройки темы
CMD/BAT - [решено] Как получить путь к профилю другого пользователя ?

Старожил


Сообщения: 440
Благодарности: 12

Профиль | Отправить PM | Цитировать


В общем пишу батник для сохранения списка пользователей и некоторых настроек.
И столкнулся с такой проблемой: у некоторых пользователей профиль хранится не в папке с именем пользователя а в папке вида user.SERVER.
Соответственно чтоб скопировать какие-то файлы из профиля, мне нужно точно знать путь к профилю а не просто подставлять в стандартный путь имя пользователя.
Но вот как получить этот путь ?

Отправлено: 00:47, 25-04-2009

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить 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
Благодарности: 12

Профиль | Отправить PM | Цитировать


Спасибо. То что нужно.

Отправлено: 16:38, 25-04-2009 | #3


Старожил


Сообщения: 440
Благодарности: 12

Профиль | Отправить 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
в файле лежат исключения из списка пользователей. Туда можно внести пользователей которых не нужно копировать, к примеру Гость, так же там должен быть мусор который туда попадает после обработки команды net user

exclusions.txt
Код: Выделить весь код
-------------------------------------------------------------------------------
Команда
Учетные
выполнена
записи
пользователей
успешно
успешно.
ASPNET
IUSR_SERVER
IWAM_SERVER
SUPPORT_388945a0
test
Гость
в файле settings.txt лежит список файлов который надо скопировать.
f перед строкой если надо скопировать только конкретный файл
d если всю директорию

settings.txt для примера
Код: Выделить весь код
f Application Data\1C\1Cv81\ibases.v8i
d Application Data\Hamachi

Отправлено: 10:41, 26-04-2009 | #4


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить 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
Благодарности: 12

Профиль | Отправить PM | Цитировать


Да этот код значительно меньше, но у меня вот путь
Application Data\1C\1Cv81\ibases.v8i скопировался в Application Data\1C\1Cv81\ibases.v8i\ibases.v8i плюс еще папки суда скопировались из папки 1Cv81.

предлагаю перенести обсуждение сюда
так как есть еще пара проблем не относящихся к пути к профилю

Отправлено: 21:26, 26-04-2009 | #6


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


mitiya, дублировать посты не буду - обращайтесь к модераторам, если есть "пара проблем" - формулируйте, из вашей новой темы их не видно

Отправлено: 03:18, 27-04-2009 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как получить путь к профилю другого пользователя ?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход