Цитата SvoiLudi:
задача - переместить папку МОИ ДОКУМЕНТЫ - с диска C: на диск V: »
|
разве только как пример управления библиотеками из
CMD через
ShLib и SLUtil
копирование/редирект "Документов" и "Избранного" текущего пользователя:
Код:

@Echo Off
Call :REDIR Personal "V:\Users\Admin\Documents" "C:\Users\Admin\AppData\Roaming\Microsoft\Windows\Libraries\Documents.library-ms"
Call :REDIR Favorites "V:\Users\Admin\Favorites"
Exit
:REDIR
::----------------------------------------
::%1- ID пользовательского каталога
::%2- новый путь к каталогу
::%3- путь к файлу библиотеки (опция)
::----------------------------------------
SetLocal
::--- пути ключей реестра ----------------
Set KEY_SHF=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
Set KEY_USF=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
Set KEY_SIW=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\CrawlScopeManager\Windows\SystemIndex\WorkingSetRules
Set KEY_SIP=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\Gather\Windows\SystemIndex\Sites\LocalHost\Paths
Set KEY_SIS=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\Gather\Windows\SystemIndex\StartPages
::--- читаем текущий путь ----------------
For /F "Tokens=2* Delims= " %%i In ('REG Query "%KEY_SHF%" /v %~1^|Find "REG_SZ"') Do Set $OLD=%%j
::--- создание/настройка целевой папки ---
If Not Exist "%~2" MD "%~2"
ATTRIB +R -H "%~2"& ATTRIB +H -R "%$OLD%"
ATTRIB -R -H -S "%$OLD%\desktop.ini"
COPY "%$OLD%\desktop.ini" "%~2" /Y
If Exist "%~2\desktop.ini" DEL /F/Q "%$OLD%\desktop.ini"
ATTRIB +R +H +S "%~2\desktop.ini"
::--- копирование содержимого ------------
XCOPY /S/K "%$OLD%\*" "%~2\"
::--- поиск параметров Windows Search ----
For /F "Delims=" %%i In ('REG Query "%KEY_SIW%" /s /f "file:///%$OLD%\\" /d /e^|Find /I "%KEY_SIW%"') Do Set SUB_SIW=%%i
For /F "Delims=" %%i In ('REG Query "%KEY_SIP%" /s /f "file:///%$OLD%\\" /d /e^|Find /I "%KEY_SIP%"') Do Set SUB_SIP=%%i
For /F "Delims=" %%i In ('REG Query "%KEY_SIS%" /s /f "%$OLD%\\" /d /e^|Find /I "%KEY_SIS%"') Do Set SUB_SIS=%%i
::--- замена параметров WindowsSearch ----
If Defined SUB_SIW REG ADD "%SUB_SIW%" /v URL /t REG_SZ /d "file:///%~2\\" /f
If Defined SUB_SIP REG ADD "%SUB_SIP%" /v URL /t REG_SZ /d "file:///%~2\\" /f
If Defined SUB_SIS REG ADD "%SUB_SIS%" /v URL /t REG_SZ /d "%~2\\" /f
::--- правим библиотеку ------------------
If Not "%~3"=="" ShLib Remove "%~3" "%$OLD%"
If Not "%~3"=="" ShLib Add "%~3" "%~2"
If Not "%~3"=="" ShLib SetSaveLoc "%~3" "%~2"
::--- вбиваем новый путь -----------------
REG ADD "%KEY_SHF%" /v "%~1" /t REG_SZ /d "%~2" /f
REG ADD "%KEY_USF%" /v "%~1" /t REG_EXPAND_SZ /d "%~2" /f
::----------------------------------------
EndLocal& GoTo :EOF
P.S. иногда могут возникать конфликты доступа при удалении пути из файла библиотеки