Войти

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


Fantastish
15-07-2016, 16:52
Доброго дня.
Прошу помощи в решении такой задачки:
Пишу скриптик для автоматизации рутийной работы по переносу профиля пользователя с диска С на D
проблема скрипта сейчас - это при копировании профиля, постоянно спрашивает каталог это или нет, а так же не может подкаталоги пересоздать
и после изменения путей реестра, использование новых путей

@ECHO off
cls

ECHO.
ECHO VIEW PROFILES USERS
rem просмотр текущей конфигурации профиля
cd c:\users
dir /b


set profiles=
rem обнуление переменной

set /p profiles=Enter name copy user:
rem ввод пользователем значения переменной choice

ECHO ______________________________________________________________________________________________
ECHO SHOW REGEDIT Profiles
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Desktop
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Favorites
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Music"
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Pictures"
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Video"
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Personal
ECHO ______________________________________________________________________________________________
pause

:start
cls
ECHO.
ECHO 1 SHOW LINE REG
ECHO 2 xcopy profiles disk D:\
ECHO 3 UPDATE REGEDIT PROFILES
ECHO 4 DELETE OLD PROFILES
ECHO 0 Exit
rem вывод меню для пользователя


set choice=
rem обнуление переменной choice

set /p choice=Enter the number of your choice:
rem ввод пользователем значения переменной choice

if '%choice%'=='1' goto one
rem если значение choice равно единице, то перейти к метке one
if '%choice%'=='2' goto two
if '%choice%'=='3' goto three
if '%choice%'=='4' goto for
if '%choice%'=='0' goto end
if '%choice%'=='' goto start


ECHO "%choice%" is not valid. Please try again
ECHO.
goto start
rem если введенное пользователем значение не предусмотрено, то начать сначала

:one
rem просмотр реестра
ECHO ______________________________________________________________________________________________
ECHO SHOW REGEDIT Profiles
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Desktop
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Favorites
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Music"
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Pictures"
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Video"
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Personal
ECHO ______________________________________________________________________________________________
pause
goto start

:two
d:
md %profiles%
cd d:\%profiles%
md Desktop
md Favorites
md Music
md Pictures
md Videos
md Personal
xcopy %userprofile%\Desktop\*.* d:\%profiles%\Desktop /E /C /H /R /Y
xcopy %userprofile%\Documents\*.* d:\%profiles%\Documents /E /C /H /R /Y
xcopy %userprofile%\Favorites\*.* d:\%profiles%\Favorites /E /C /H /R /Y
xcopy %userprofile%\Music\*.* d:\%profiles%\Music /E /C /H /R /Y
xcopy %userprofile%\Pictures\*.* d:\%profiles%\Pictures /E /C /H /R /Y
xcopy %userprofile%\Videos\*.* d:\%profiles%\Videos /E /C /H /R /Y
pause
goto start

:three
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Desktop /t REG_SZ /d D:\%profiles%\Desktop /f
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Favorites /t REG_SZ /d D:\%profiles%\Favorites /f
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Music" /t REG_SZ /d "D:\%profiles%\Music" /f
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Pictures" /t REG_SZ /d "D:\%profiles%\My Pictures" /f
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Music" /t REG_SZ /d "D:\%profiles%\Music" /f
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Video" /t REG_SZ /d "D:\%profiles%\My Video" /f
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Personal /t REG_SZ /d D:\%profiles%\Personal /f
pause
goto start

:for

pause


:end


рассмотрю варианты оптимизации

Iska
15-07-2016, 17:44
Fantastish, Вы в курсе, что такое симлинки?

Fantastish
18-07-2016, 12:51
ссылка без относительных путей верно?
описание почитал, но не работал сними в практике.
Подскажите, как выйти из ситуации?

Iska
18-07-2016, 14:22
Создавать их надо по новому местоположению.

Fantastish
18-07-2016, 14:43
жаль не до конца понимаю этого, в качестве примера, можете подсказать варианты реализации через батник?

Iska
18-07-2016, 17:00
Неа.

Fantastish
19-07-2016, 15:57
Проще всего получится реализовать через групповую политику?
или например вариант:
mklink /j c:\Users d:\Users
mklink /j "d:\Users\All Users" c:\ProgramData
mklink /j "d:\Users\Default User" d:\Users\Default
mklink /j "d:\Users\Все пользователи" c:\ProgramData
но использовать для папок?
или
set userfolder=d:\Users\**

if exist "%userfolder%\My Documents" rd /s /q "%userfolder%\My Documents"
mklink /j "%userfolder%\My Documents" "%userfolder%\Documents"
attrib +H "%userfolder%\My Documents" /L




© OSzone.net 2001-2012