4
1

关于封装时用批理转移用户文件的方法

系统封装2023-03-27 23:33江西
6764
我在封装win10及11系统时,想要将用户文件转移至D:\BACKUP 目录下时,试过好几种方式,都达不到我想要的要求。总遇到各种
各样的问题。后来记起以前封装xp,win7时有个不知名作者的批处理文件,好像挺好用,能达到我的要求,所以四处找到下。找不
到了,后面还是翻到我以前封装的xp包里找到了。提取出来,试了一下,还是没能满足我的需求。决定改一下看看能不能达到 我的
需求。边改边试,最后勉强算成功了。现将成品发出来跟坛里大神讨论下,能不能帮我完善一下它。
尝试过用mklink的方式,发现在D盘如果存在同名文件夹时,会被改名成 ”同名文件夹_*******"的方式隐藏,原来的文件就看
不到了,每次还得去被隐藏的文件夹里复制文件回来,很烦人!我的需求:
1,部署进桌面后,调用批处理 将"C:\Users\Administrator" 目录下
"C:\Users\Administrator\3D Objects"
"C:\Users\Administrator\OneDrive"
"C:\Users\Administrator\Saved Games"
"C:\Users\Administrator\Contacts"
"C:\Users\Administrator\Links"
"C:\Users\Administrator\Videos"
"C:\Users\Administrator\Favorites"
"C:\Users\Administrator\Searches"
"C:\Users\Administrator\Pictures"
"C:\Users\Administrator\Documents"
"C:\Users\Administrator\Downloads"
"C:\Users\Administrator\Music"
"C:\Users\Administrator\Desktop"
将这个几文件用批处理 转移至 D:\BACKUP 文件夹,且“C:\Users\Administrator ”下其它的文件及文件夹不转移,
2,当D盘有相同D:\BACKUP目录时,就合并进同一目录,且当同名文件下有相同文件时,进行覆盖。
3,只转移这几个文件夹,其它的比如“C:\Users\Administrator\Appdata” 和链接文件,及NTUSE* 类的文件不转移过去。
4,转移文件后,保留各文件夹原有的图标,且D:\BACKUP文件夹能加上个性图标,
比如这个->IconResource=C:\Windows\system32\imageres.dll,117。
D:\BACKUP文件夹用中文“用户”显示,但原有D:\BACKUP路径不变。
5,修注册表,
“HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders”
“HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
将各文件夹的路径指向各个文件夹
示例:非原创-改他的,感谢原作者
@echo off
::------------------------------------------ 自动提升运行权限 ---------------------------------------::
>nul 2>&1 REG.exe query "HKU\S-1-5-19" || (
    ECHO SET UAC = CreateObject^("Shell.Application"^) > "%TEMP%\Getadmin.vbs"
    ECHO UAC.ShellExecute "%~f0", "%1", "", "runas", 1 >> "%TEMP%\Getadmin.vbs"
    "%TEMP%\Getadmin.vbs"
    DEL /f /q "%TEMP%\Getadmin.vbs" 2>nul
    Exit /b
)
::--------------------------------------------------------------------------------------------------::
SET "SF=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
SET "USF=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
rem 设置个人文件夹
SET "Users=D:\Backup"
robocopy C:\Users\Administrator "%Users%" /COPYALL /XJ /XD "C:\Users\Administrator\AppData" /XF ntuse*
cd /d "%Users%
cmd /u /c echo IconResource=C:\Windows\system32\imageres.dll,117 >>desktop.ini
rem 移动原 桌面
for /f "tokens=2,*" %%i in ('reg query "%SF%" /v "Desktop"') do set Desktop=%%j
if /i "%Desktop%" NEQ "%Users%\Desktop" robocopy  "%Desktop%" "%Users%\Desktop" /E /COPYALL /XJ /MOVE
rem 移动原 收藏夹
for /f "tokens=2,*" %%i in ('reg query "%SF%" /v "Favorites"') do set Favorites=%%j
if /i "%Favorites%" NEQ "%Users%\Favorites" robocopy  "%Favorites%" "%Users%\Favorites" /E /COPYALL /XJ /MOVE
rem 移动原 视频
for /f "tokens=3,*" %%i in ('reg query "%SF%" /v "My Video"') do set Videos=%%j
if /i "%Videos%" NEQ "%Users%\Videos" robocopy  "%Videos%" "%Users%\Videos" /E /COPYALL /XJ /MOVE
rem 移动原 我的音乐
for /f "tokens=3,*" %%i in ('reg query "%SF%" /v "My Music"') do set Music=%%j
if /i "%Music%" NEQ "%Users%\Music" robocopy  "%Music%" "%Users%\Music" /E /COPYALL /XJ /MOVE
rem 移动原 我的图片
for /f "tokens=3,*" %%i in ('reg query "%SF%" /v "My Pictures"') do set Pictures=%%j
if /i "%Pictures%" NEQ "%Users%\Pictures" robocopy  "%Pictures%" "%Users%\Pictures" /E /COPYALL /XJ /MOVE
rem 移动原 下载
for /f "tokens=2,*" %%i in ('reg query "%SF%" /v "{374DE290-123F-4565-9164-39C4925E467B}"') do set Downloads=%%j
if /i "%Downloads%" NEQ "%Users%\Downloads" robocopy  "%Downloads%" "%Users%\Downloads" /E /COPYALL /XJ /MOVE
rem 移动原 保存的游戏
for /f "tokens=2,*" %%i in ('reg query "%SF%" /v "{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}"') do set Games=%%j
if /i "%Games%" NEQ "%Users%\Saved Games" robocopy  "%Games%" "%Users%\Saved Games" /E /COPYALL /XJ /MOVE
rem 移动原 联系人
for /f "tokens=2,*" %%i in ('reg query "%SF%" /v "{56784854-C6CB-462B-8169-88E350ACB882}"') do set Contacts=%%j
if /i "%Contacts%" NEQ "%Users%\Contacts" robocopy  "%Contacts%" "%Users%\Contacts" /E /COPYALL /XJ /MOVE
rem 移动原 搜索
for /f "tokens=2,*" %%i in ('reg query "%SF%" /v "{7D1D3A04-DEBB-4115-95CF-2F29DA2920DA}"') do set Searches=%%j
if /i "%Searches%" NEQ "%Users%\Searches" robocopy  "%Searches%" "%Users%\Searches" /E /COPYALL /XJ /MOVE
rem 移动原 链接
for /f "tokens=2,*" %%i in ('reg query "%SF%" /v "{BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968}"') do set Links=%%j
if /i "%Links%" NEQ "%Users%\Links" robocopy  "%Links%" "%Users%\Links" /E /COPYALL /XJ /MOVE
rem 移动原 我的文档
for /f "tokens=2,*" %%i in ('reg query "%SF%" /v "Personal"') do set Documents=%%j
if /i "%Documents%" NEQ "%Users%\Documents" robocopy  "%Documents%" "%Users%\Documents" /E /COPYALL /XJ /MOVE
rem 移动原 3D 对象
for /f "tokens=2,*" %%i in ('reg query "%USF%" /v "{31C0DD25-9439-4F12-BF41-7FF4EDA38722}"') do set Objects=%%j
if /i "%Objects%" NEQ "%Users%\3D Objects" robocopy  "%Objects%" "%Users%\3D Objects" /E /COPYALL /XJ /MOVE
rem 移动原 OneDrive
for /f "tokens=2,*" %%i in ('reg query "%USF%" /v "{A52BBA46-E9E1-435F-B3D9-28DAA648C0F6}"') do set OneDrive=%%j
if /i "%OneDrive%" NEQ "%Users%\OneDrive" robocopy  "%OneDrive%" "%Users%\OneDrive" /E /COPYALL /XJ /MOVE
rem Shell Folders
REG ADD "%SF%" /F /V "Personal" /T REG_SZ /D "%Users%\Documents"
REG ADD "%SF%" /F /V "Desktop" /T REG_SZ /D "%Users%\Desktop"
REG ADD "%SF%" /F /V "My Video" /T REG_SZ /D "%Users%\Videos"
REG ADD "%SF%" /F /V "My Pictures" /T REG_SZ /D "%Users%\Pictures"
REG ADD "%SF%" /F /V "Favorites" /T REG_SZ /D "%Users%\Favorites"
REG ADD "%SF%" /F /V "My Music" /T REG_SZ /D "%Users%\Music"
REG ADD "%SF%" /F /V "{374DE290-123F-4565-9164-39C4925E467B}" /T REG_SZ /D "%Users%\Downloads"
REG ADD "%SF%" /F /V "{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}" /T REG_SZ /D "%Users%\Saved Games"
REG ADD "%SF%" /F /V "{56784854-C6CB-462B-8169-88E350ACB882}" /T REG_SZ /D "%Users%\Contacts"
REG ADD "%SF%" /F /V "{7D1D3A04-DEBB-4115-95CF-2F29DA2920DA}" /T REG_SZ /D "%Users%\Searches"
REG ADD "%SF%" /F /V "{BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968}" /T REG_SZ /D "%Users%\Links"
rem User Shell Folders
REG ADD "%USF%" /F /V "Personal" /T REG_EXPAND_SZ /D "%Users%\Documents"
REG ADD "%USF%" /F /V "Desktop" /T REG_EXPAND_SZ /D "%Users%\Desktop"
REG ADD "%USF%" /F /V "My Video" /T REG_EXPAND_SZ /D "%Users%\Videos"
REG ADD "%USF%" /F /V "My Pictures" /T REG_EXPAND_SZ /D "%Users%\Pictures"
REG ADD "%USF%" /F /V "Favorites" /T REG_EXPAND_SZ /D "%Users%\Favorites"
REG ADD "%USF%" /F /V "My Music" /T REG_EXPAND_SZ /D "%Users%\Music"

REG ADD "%USF%" /F /V "{F42EE2D3-909F-4907-8871-4C22FC0BF756}" /T REG_EXPAND_SZ /D "%Users%\Documents"
REG ADD "%USF%" /F /V "{374DE290-123F-4565-9164-39C4925E467B}" /T REG_EXPAND_SZ /D "%Users%\Downloads"
REG ADD "%USF%" /F /V "{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}" /T REG_EXPAND_SZ /D "%Users%\Saved Games"
REG ADD "%USF%" /F /V "{56784854-C6CB-462B-8169-88E350ACB882}" /T REG_EXPAND_SZ /D "%Users%\Contacts"
REG ADD "%USF%" /F /V "{7D1D3A04-DEBB-4115-95CF-2F29DA2920DA}" /T REG_EXPAND_SZ /D "%Users%\Searches"
REG ADD "%USF%" /F /V "{BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968}" /T REG_EXPAND_SZ /D "%Users%\Links"
REG ADD "%USF%" /F /V "{31C0DD25-9439-4F12-BF41-7FF4EDA38722}" /T REG_EXPAND_SZ /D "%Users%\3D Objects"
REG ADD "%USF%" /F /V "{A52BBA46-E9E1-435F-B3D9-28DAA648C0F6}" /T REG_EXPAND_SZ /D "%Users%\OneDrive"
rem 重启 explorer.exe
taskkill /im explorer.exe /f
start "" explorer

使用这个批处理后,基本满足需求,功能一切正常。使用是没有问题的。但有几个不足的地方,
1,部分丢失文件夹个性图标的问题(问题不大,已修复)
2,"D:\BACKUP" 未能加上个性图标,不能用中文”用户“显示。我在想是不是要用desktop.ini的方式加上去。
3,资源管理器的七个文件夹,也就是打开此电脑后,盘符上面的几个文件夹的路径仍是"C:\Users\Administrator“
虽然不影响正常使用,我也可以用注册表删了这几个障眼的”家伙“,眼不见,心不烦。但这个小问题特烦人。很想搞定它。
4, 三个文件夹"3D Objects"    "OneDrive"   "Documents" 已复制转移至D盘,
但 C:\Administrator 仍有残留文件夹的问题、 分析了下,当注册表里没有3D Objects 和 OneDrive的值时,
会发生这种情况(已修复,修复方法是预导入3D Objects 和 OneDrive的注册表的值)
如下
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
"{A52BBA46-E9E1-435F-B3D9-28DAA648C0F6}"=hex(2):43,00,3a,00,5c,00,55,00,73,00,\
  65,00,72,00,73,00,5c,00,41,00,64,00,6d,00,69,00,6e,00,69,00,73,00,74,00,72,\
  00,61,00,74,00,6f,00,72,00,5c,00,4f,00,6e,00,65,00,44,00,72,00,69,00,76,00,\
  65,00,00,00
"{31C0DD25-9439-4F12-BF41-7FF4EDA38722}"=hex(2):43,00,3a,00,5c,00,55,00,73,00,\
  65,00,72,00,73,00,5c,00,41,00,64,00,6d,00,69,00,6e,00,69,00,73,00,74,00,72,\
  00,61,00,74,00,6f,00,72,00,5c,00,33,00,44,00,20,00,4f,00,62,00,6a,00,65,00,\
  63,00,74,00,73,00,00,00
将以上内容保留为reg文件,在调用批处理前用 regedit /导入,可以修复3D Objects"    "OneDrive" 残留文件夹的问。
也可以在批处理执行移动原文*件前,用REG add先 导入注册表。
5”Documents“残留的原因,暂时还不确定。
(已修复:原因是HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders有两个Documents值)
解决方法:
在原来值上,再加上这个注册表值
REG ADD "%USF%" /F /V "{F42EE2D3-909F-4907-8871-4C22FC0BF756}" /T REG_EXPAND_SZ /D "%Users%\Documents"
以上描述不知是否清晰明了?请各位大神帮忙改进。
现在只剩下1个问题了
3,资源管理器的七个文件夹,也就是打开此电脑后,盘符上面的几个文件夹的路径仍是
"C:\Users\Administrator“ 正常使用没有任何问题,就是这几个文件夹图标看着障眼而已,这几个可以用注册表删除,删除后,看起来完美。
我心里还是想弄明白资源管理器的七个文件夹为什么还会显示原路径的原因。


修复了以上问题,完善后的批处理文件放在附件里下载

查看附件

全部回复 4
jxyxhyb

主题: 1

回复: 8

关注: 0

粉丝: 0

TA 的积分
  • 91
  • 1
  • 0