Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Автоматизация рутийных действий с профилем пользователя (http://forum.oszone.net/showthread.php?t=316831)

Fantastish 15-07-2016 16:52 2651251

Автоматизация рутийных действий с профилем пользователя
 
Доброго дня.
Прошу помощи в решении такой задачки:
Пишу скриптик для автоматизации рутийной работы по переносу профиля пользователя с диска С на 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 2651263

Fantastish, Вы в курсе, что такое симлинки?

Fantastish 18-07-2016 12:51 2651848

ссылка без относительных путей верно?
описание почитал, но не работал сними в практике.
Подскажите, как выйти из ситуации?

Iska 18-07-2016 14:22 2651881

Создавать их надо по новому местоположению.

Fantastish 18-07-2016 14:43 2651888

жаль не до конца понимаю этого, в качестве примера, можете подсказать варианты реализации через батник?

Iska 18-07-2016 17:00 2651924

Неа.

Fantastish 19-07-2016 15:57 2652242

Проще всего получится реализовать через групповую политику?
или например вариант:
Код:

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



Время: 15:30.

Время: 15:30.
© OSzone.net 2001-