标题: 如何从注册表中获取到系统环境变量,并把其中文件保存
[打印本页]
作者: 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 ]