Board logo

标题: 如何从注册表中获取到系统环境变量,并把其中文件保存 [打印本页]

作者: wushi4057216     时间: 2010-8-3 18:13    标题: 如何从注册表中获取到系统环境变量,并把其中文件保存

RT. 我想使用批处理来保存我的文档,桌面,和收藏夹里的内容到D盘 但是很多电脑环境变量有的改变了.不能通过这段命令来保存xcopy /e /q /h /i /c /y "%userprofile%\桌面\*.*" "d:\Backup\桌面" xcopy /e /q /h /i /c /y "%userprofile%\我的文档\*.*" "d:\Backup\桌面" xcopy /e /q /h /i /c /y "%userprofile%\Favorites\*.*" "d:\Backup\桌面" 查看了下注册表内的环境变量 这个语句:reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" >1.txt 1.txt内容如下: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders AppData REG_EXPAND_SZ %USERPROFILE%\Application Data Desktop REG_EXPAND_SZ %USERPROFILE%\桌面 Favorites REG_EXPAND_SZ D:\My Documents\Favorites NetHood REG_EXPAND_SZ %USERPROFILE%\NetHood Personal REG_EXPAND_SZ D:\My Documents PrintHood REG_EXPAND_SZ %USERPROFILE%\PrintHood Templates REG_EXPAND_SZ %USERPROFILE%\Templates My Pictures REG_EXPAND_SZ D:\My Documents\My Pictures My Music REG_EXPAND_SZ D:\My Documents\My Music 现在的问题是如何把 Favorites REG_EXPAND_SZ D:\My Documents\Favorites 后面的值赋予.使之可以复制其中的内容~~ 想请教下论坛高手如何实现这个目标..希望给予些指点~~ 批处理新手留..

作者: HAT     时间: 2010-8-4 00:42
学习一下如何使用for命令吧

作者: wys0754     时间: 2010-8-4 14:26
for /f "skip=4 tokens=3" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v desktop') do (xcopy /e /q /h /i /c /y "%%a\*.*" "d:\Backup\桌面") for /f "skip=4 tokens=3" %%b in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal') do (xcopy /e /q /h /i /c /y "%%b\*.*" "d:\Backup\桌面") for /f "skip=4 tokens=3" %%c in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Favorites') do (xcopy /e /q /h /i /c /y "%%c\*.*" "d:\Backup\桌面") [ Last edited by wys0754 on 2010-8-4 at 14:34 ]

作者: wushi4057216     时间: 2010-8-4 19:31
谢谢楼上的回答...试了你的代码..出错了..:: C:\Documents and Settings\Administrator\桌面\V "D:\My\*.*" "d:\Backup\桌面" ) 找不到文件 - *.* 复制了 0 个文件 注册表键值: Favorites REG_EXPAND_SZ D:\My Documents\Favorites 这个键值MY后面带空格的...我找到一个方法获取了出来.(呵呵.也是咱们论坛的内容.是提取注册表两个内容.合并后写入另一个地址的帖子..) @echo off set p=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders for /f "skip=4 tokens=2*" %%a in ('reg query "%p%" /v Desktop') do set "ver=%%b" for /f "skip=4 tokens=2*" %%c in ('reg query "%p%" /v Favorites') do set "servp=%%d" for /f "skip=4 tokens=2*" %%e in ('reg query "%p%" /v Personal') do set "servp1=%%f" echo %ver% %servp% %servp1% pause xcopy /e /q /h /i /c /y "%ver%\*.*" "d:\Backup\桌面" xcopy /e /q /h /i /c /y "%servp%\*.*" "d:\Backup\收藏夹" xcopy /e /q /h /i /c /y "%servp1%\*.*" "d:\Backup\我的文档" 整个文件还需要更加完善了修改.. 这段对于修改了环境变量的系统米作用.. 明天继续学习下.. [ Last edited by wushi4057216 on 2010-8-4 at 19:32 ]

作者: wys0754     时间: 2010-8-4 23:43
呵呵,确实忘了还有空格哪。
for /f "skip=4 tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v desktop') do (xcopy /e /q /h /i /c /y "%%b\*.*" "d:\Backup\桌面")
for /f "skip=4 tokens=2*" %%c in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal') do (xcopy /e /q /h /i /c /y "%%d\*.*" "d:\Backup\桌面")
for /f "skip=4 tokens=2*" %%e in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Favorites') do (xcopy /e /q /h /i /c /y "%%f\*.*" "d:\Backup\桌面")
[ Last edited by wys0754 on 2010-8-5 at 00:30 ]