Цитата mitiya:
это по прежнему актуально »
|
исправил
Цитата mitiya:
я так понял что подключенные-то пользователи как раз появляются в user со своим сидом , так что нужно как-то только проверить подключен ли он сейчас , наверно можно с помощью errorlevel »
|
где-то так (пока без замены), исправил ошибки, тестируйте:
Код:
@Echo Off
Set $Home=%cd%
Set $Root=.
Set FileIncl=%$Home%FileIncl.txt
Set UserExcl=%$Home%UserExcl.txt
Set HKCUIncl=%$Home%HKCUIncl.txt
PushD %$Root%
If Exist users RD /S /Q users
MD Users
CD Users
For /F "Tokens=1,2" %%i In ('WMIC UserAccount Where LocalAccount^=True Get Name^,SID^,Status^|FindStr /IERC:"OK *"') Do Call :CopyUserProfile %%i %%j
PopD
Exit
:CopyUserProfile
:: -------------
:: %1 - User Name
:: %2 - User SID
:: -------------
CHCP 1251 >Nul
:: Сверка имени со списком исключения
FindStr /IXC:"%~1" %UserExcl%
If Not ErrorLevel 1 GoTo :EOF
:: Получение пути к профилю пользователя
Set $UserProfile=
For /F "Tokens=1,2*" %%i In ('2^>Nul REG Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%~2"^|FindStr /BIRC:" *ProfileImagePath"') Do Call Set $UserProfile=%%k
If "%$UserProfile%"=="" GoTo :EOF
:: Копирование файлов/каталогов по списку
For /F "UseBackQ Tokens=* Delims=" %%A In ("%FileIncl%") Do Call :CopyUserFile "%$UserProfile%\%%A" "%~1\Files\%%A"
:: Копирование веток реестра по списку
REG Load HKU\TEMP "%$UserProfile%\NTUSER.DAT" >Nul 2>&1
If Not ErrorLevel 1 (
Call :CopyUserRegKeys "%~1" "HKU\TEMP"
REG Unload HKU\TEMP >Nul
)
REG Query "HKU\%~2" >Nul 2>&1
If Not ErrorLevel 1 Call :CopyUserRegKeys "%~1" "HKU\%~2"
CHCP 866 >Nul
GoTo :EOF
:CopyUserFile
:: ----------------------------
:: %1 - Source File/Directory
:: %2 - Destination File/Folder
:: ----------------------------
If Exist "%~1\" XCopy /E/H/Q "%~1" "%~2\" >Nul
If Not Exist "%~1" GoTo :EOF
@Echo F|XCopy /H/Q "%~1" "%~2" >Nul
GoTo :EOF
:CopyUserRegKeys
:: ------------------
:: %1 - User Name
:: %2 - Registry Hive
:: ------------------
For /F "UseBackQ Delims=" %%i In ("%HKCUIncl%") Do (
@Echo F|XCopy /R/V/Q "%~dpnx0" "%~1\Regis\%%i.reg" >Nul
If Exist "%~1\Regis\%%i.reg" DEL /Q/F "%~1\Regis\%%i.reg"
REG Export "%~2\%%i" "%~1\Regis\%%i.reg" >Nul 2>&1
)
GoTo :EOF